Why does the variable “bmi” only get the value of the variable “weight”?










-5














public class P2A7 

public static void main(String args)
String name = args[0];
int weight = Integer.parseInt(args[1]);
double length = Double.parseDouble(args[2]);
double bmi = weight / length * length;
System.out.println(bmi);




Passing java Name 80 1.9 from the command line gives the output "80".
Why are the division and multiplication completely ignored?



Putting parentheses around "length * length" fixes this.










share|improve this question



















  • 3




    Dividing by a number and then multiplying by that same number gets you back to the initial number. This is just how math works.
    – tkausl
    Nov 10 '18 at 12:43







  • 4




    Because you divide by something and then immediately multiply by it again. / and * have equal precedence, so weight / length * length means (weight / length) * length.
    – Andy Turner
    Nov 10 '18 at 12:43











  • I mixed this up with assignments. Assignments on the same row (e.g. x = y += z = 1;) get done from right to left and other binary operations get done from left to right (e.g. 5 % 2 * 3 / 6). Sorry!
    – Kristjan Link
    Nov 12 '18 at 15:20















-5














public class P2A7 

public static void main(String args)
String name = args[0];
int weight = Integer.parseInt(args[1]);
double length = Double.parseDouble(args[2]);
double bmi = weight / length * length;
System.out.println(bmi);




Passing java Name 80 1.9 from the command line gives the output "80".
Why are the division and multiplication completely ignored?



Putting parentheses around "length * length" fixes this.










share|improve this question



















  • 3




    Dividing by a number and then multiplying by that same number gets you back to the initial number. This is just how math works.
    – tkausl
    Nov 10 '18 at 12:43







  • 4




    Because you divide by something and then immediately multiply by it again. / and * have equal precedence, so weight / length * length means (weight / length) * length.
    – Andy Turner
    Nov 10 '18 at 12:43











  • I mixed this up with assignments. Assignments on the same row (e.g. x = y += z = 1;) get done from right to left and other binary operations get done from left to right (e.g. 5 % 2 * 3 / 6). Sorry!
    – Kristjan Link
    Nov 12 '18 at 15:20













-5












-5








-5







public class P2A7 

public static void main(String args)
String name = args[0];
int weight = Integer.parseInt(args[1]);
double length = Double.parseDouble(args[2]);
double bmi = weight / length * length;
System.out.println(bmi);




Passing java Name 80 1.9 from the command line gives the output "80".
Why are the division and multiplication completely ignored?



Putting parentheses around "length * length" fixes this.










share|improve this question















public class P2A7 

public static void main(String args)
String name = args[0];
int weight = Integer.parseInt(args[1]);
double length = Double.parseDouble(args[2]);
double bmi = weight / length * length;
System.out.println(bmi);




Passing java Name 80 1.9 from the command line gives the output "80".
Why are the division and multiplication completely ignored?



Putting parentheses around "length * length" fixes this.







java






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 10 '18 at 12:43









JB Nizet

535k52860995




535k52860995










asked Nov 10 '18 at 12:41









Kristjan Link

42




42







  • 3




    Dividing by a number and then multiplying by that same number gets you back to the initial number. This is just how math works.
    – tkausl
    Nov 10 '18 at 12:43







  • 4




    Because you divide by something and then immediately multiply by it again. / and * have equal precedence, so weight / length * length means (weight / length) * length.
    – Andy Turner
    Nov 10 '18 at 12:43











  • I mixed this up with assignments. Assignments on the same row (e.g. x = y += z = 1;) get done from right to left and other binary operations get done from left to right (e.g. 5 % 2 * 3 / 6). Sorry!
    – Kristjan Link
    Nov 12 '18 at 15:20












  • 3




    Dividing by a number and then multiplying by that same number gets you back to the initial number. This is just how math works.
    – tkausl
    Nov 10 '18 at 12:43







  • 4




    Because you divide by something and then immediately multiply by it again. / and * have equal precedence, so weight / length * length means (weight / length) * length.
    – Andy Turner
    Nov 10 '18 at 12:43











  • I mixed this up with assignments. Assignments on the same row (e.g. x = y += z = 1;) get done from right to left and other binary operations get done from left to right (e.g. 5 % 2 * 3 / 6). Sorry!
    – Kristjan Link
    Nov 12 '18 at 15:20







3




3




Dividing by a number and then multiplying by that same number gets you back to the initial number. This is just how math works.
– tkausl
Nov 10 '18 at 12:43





Dividing by a number and then multiplying by that same number gets you back to the initial number. This is just how math works.
– tkausl
Nov 10 '18 at 12:43





4




4




Because you divide by something and then immediately multiply by it again. / and * have equal precedence, so weight / length * length means (weight / length) * length.
– Andy Turner
Nov 10 '18 at 12:43





Because you divide by something and then immediately multiply by it again. / and * have equal precedence, so weight / length * length means (weight / length) * length.
– Andy Turner
Nov 10 '18 at 12:43













I mixed this up with assignments. Assignments on the same row (e.g. x = y += z = 1;) get done from right to left and other binary operations get done from left to right (e.g. 5 % 2 * 3 / 6). Sorry!
– Kristjan Link
Nov 12 '18 at 15:20




I mixed this up with assignments. Assignments on the same row (e.g. x = y += z = 1;) get done from right to left and other binary operations get done from left to right (e.g. 5 % 2 * 3 / 6). Sorry!
– Kristjan Link
Nov 12 '18 at 15:20












3 Answers
3






active

oldest

votes


















0














@Kristjan Link, This is because precedence of operator, when you write weight / (length * length) you increase precedence of multiplication *, because precedence of operator inside parentheses is always more than operator outside parentheses



Use of parentheses fix it because it increases precedence of * operator. By using parentheses you explicitly give * more precedence than / that's why multiplication expression will be executed first due to its increased precedence other wise both * and / have same precedence.



NOTE:



but remember despite same precedence / execute first than * because it comes first. Just like () is way to increase precedence, shifting position of operator is another way increase or decrease precedence of operators.The table present here. will be helpful for you in this regard.






share|improve this answer






























    0














    Because double bmi = weight / length * length = weight is not same as
    double bmi= weight / (length * length)



    In the first case, You are ending up getting the same result as you are not using any parenthesis.



    / and * have equal precedence, so weight / length * length means (weight / length) * length






    share|improve this answer






























      -1














      Because / has higher precedence than . Hence, your code just performs divide and multiply by length which returns weight. () has higher precedence than / and hence the code inside () will execute first which results in weight multiplied by lengthlength






      share|improve this answer




















        Your Answer






        StackExchange.ifUsing("editor", function ()
        StackExchange.using("externalEditor", function ()
        StackExchange.using("snippets", function ()
        StackExchange.snippets.init();
        );
        );
        , "code-snippets");

        StackExchange.ready(function()
        var channelOptions =
        tags: "".split(" "),
        id: "1"
        ;
        initTagRenderer("".split(" "), "".split(" "), channelOptions);

        StackExchange.using("externalEditor", function()
        // Have to fire editor after snippets, if snippets enabled
        if (StackExchange.settings.snippets.snippetsEnabled)
        StackExchange.using("snippets", function()
        createEditor();
        );

        else
        createEditor();

        );

        function createEditor()
        StackExchange.prepareEditor(
        heartbeatType: 'answer',
        autoActivateHeartbeat: false,
        convertImagesToLinks: true,
        noModals: true,
        showLowRepImageUploadWarning: true,
        reputationToPostImages: 10,
        bindNavPrevention: true,
        postfix: "",
        imageUploader:
        brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
        contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
        allowUrls: true
        ,
        onDemand: true,
        discardSelector: ".discard-answer"
        ,immediatelyShowMarkdownHelp:true
        );



        );













        draft saved

        draft discarded


















        StackExchange.ready(
        function ()
        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53239062%2fwhy-does-the-variable-bmi-only-get-the-value-of-the-variable-weight%23new-answer', 'question_page');

        );

        Post as a guest















        Required, but never shown

























        3 Answers
        3






        active

        oldest

        votes








        3 Answers
        3






        active

        oldest

        votes









        active

        oldest

        votes






        active

        oldest

        votes









        0














        @Kristjan Link, This is because precedence of operator, when you write weight / (length * length) you increase precedence of multiplication *, because precedence of operator inside parentheses is always more than operator outside parentheses



        Use of parentheses fix it because it increases precedence of * operator. By using parentheses you explicitly give * more precedence than / that's why multiplication expression will be executed first due to its increased precedence other wise both * and / have same precedence.



        NOTE:



        but remember despite same precedence / execute first than * because it comes first. Just like () is way to increase precedence, shifting position of operator is another way increase or decrease precedence of operators.The table present here. will be helpful for you in this regard.






        share|improve this answer



























          0














          @Kristjan Link, This is because precedence of operator, when you write weight / (length * length) you increase precedence of multiplication *, because precedence of operator inside parentheses is always more than operator outside parentheses



          Use of parentheses fix it because it increases precedence of * operator. By using parentheses you explicitly give * more precedence than / that's why multiplication expression will be executed first due to its increased precedence other wise both * and / have same precedence.



          NOTE:



          but remember despite same precedence / execute first than * because it comes first. Just like () is way to increase precedence, shifting position of operator is another way increase or decrease precedence of operators.The table present here. will be helpful for you in this regard.






          share|improve this answer

























            0












            0








            0






            @Kristjan Link, This is because precedence of operator, when you write weight / (length * length) you increase precedence of multiplication *, because precedence of operator inside parentheses is always more than operator outside parentheses



            Use of parentheses fix it because it increases precedence of * operator. By using parentheses you explicitly give * more precedence than / that's why multiplication expression will be executed first due to its increased precedence other wise both * and / have same precedence.



            NOTE:



            but remember despite same precedence / execute first than * because it comes first. Just like () is way to increase precedence, shifting position of operator is another way increase or decrease precedence of operators.The table present here. will be helpful for you in this regard.






            share|improve this answer














            @Kristjan Link, This is because precedence of operator, when you write weight / (length * length) you increase precedence of multiplication *, because precedence of operator inside parentheses is always more than operator outside parentheses



            Use of parentheses fix it because it increases precedence of * operator. By using parentheses you explicitly give * more precedence than / that's why multiplication expression will be executed first due to its increased precedence other wise both * and / have same precedence.



            NOTE:



            but remember despite same precedence / execute first than * because it comes first. Just like () is way to increase precedence, shifting position of operator is another way increase or decrease precedence of operators.The table present here. will be helpful for you in this regard.







            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited Nov 10 '18 at 14:21

























            answered Nov 10 '18 at 13:05









            Al Fahad

            725821




            725821























                0














                Because double bmi = weight / length * length = weight is not same as
                double bmi= weight / (length * length)



                In the first case, You are ending up getting the same result as you are not using any parenthesis.



                / and * have equal precedence, so weight / length * length means (weight / length) * length






                share|improve this answer



























                  0














                  Because double bmi = weight / length * length = weight is not same as
                  double bmi= weight / (length * length)



                  In the first case, You are ending up getting the same result as you are not using any parenthesis.



                  / and * have equal precedence, so weight / length * length means (weight / length) * length






                  share|improve this answer

























                    0












                    0








                    0






                    Because double bmi = weight / length * length = weight is not same as
                    double bmi= weight / (length * length)



                    In the first case, You are ending up getting the same result as you are not using any parenthesis.



                    / and * have equal precedence, so weight / length * length means (weight / length) * length






                    share|improve this answer














                    Because double bmi = weight / length * length = weight is not same as
                    double bmi= weight / (length * length)



                    In the first case, You are ending up getting the same result as you are not using any parenthesis.



                    / and * have equal precedence, so weight / length * length means (weight / length) * length







                    share|improve this answer














                    share|improve this answer



                    share|improve this answer








                    edited Nov 10 '18 at 13:29

























                    answered Nov 10 '18 at 12:51









                    suvojit_007

                    1,3251517




                    1,3251517





















                        -1














                        Because / has higher precedence than . Hence, your code just performs divide and multiply by length which returns weight. () has higher precedence than / and hence the code inside () will execute first which results in weight multiplied by lengthlength






                        share|improve this answer

























                          -1














                          Because / has higher precedence than . Hence, your code just performs divide and multiply by length which returns weight. () has higher precedence than / and hence the code inside () will execute first which results in weight multiplied by lengthlength






                          share|improve this answer























                            -1












                            -1








                            -1






                            Because / has higher precedence than . Hence, your code just performs divide and multiply by length which returns weight. () has higher precedence than / and hence the code inside () will execute first which results in weight multiplied by lengthlength






                            share|improve this answer












                            Because / has higher precedence than . Hence, your code just performs divide and multiply by length which returns weight. () has higher precedence than / and hence the code inside () will execute first which results in weight multiplied by lengthlength







                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered Nov 10 '18 at 19:02









                            Vishnu V

                            726




                            726



























                                draft saved

                                draft discarded
















































                                Thanks for contributing an answer to Stack Overflow!


                                • Please be sure to answer the question. Provide details and share your research!

                                But avoid


                                • Asking for help, clarification, or responding to other answers.

                                • Making statements based on opinion; back them up with references or personal experience.

                                To learn more, see our tips on writing great answers.





                                Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                                Please pay close attention to the following guidance:


                                • Please be sure to answer the question. Provide details and share your research!

                                But avoid


                                • Asking for help, clarification, or responding to other answers.

                                • Making statements based on opinion; back them up with references or personal experience.

                                To learn more, see our tips on writing great answers.




                                draft saved


                                draft discarded














                                StackExchange.ready(
                                function ()
                                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53239062%2fwhy-does-the-variable-bmi-only-get-the-value-of-the-variable-weight%23new-answer', 'question_page');

                                );

                                Post as a guest















                                Required, but never shown





















































                                Required, but never shown














                                Required, but never shown












                                Required, but never shown







                                Required, but never shown

































                                Required, but never shown














                                Required, but never shown












                                Required, but never shown







                                Required, but never shown







                                Popular posts from this blog

                                𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

                                ャフサォクコ ケウ,コ,ワ メ,ロスョノ゙,クネ,フムカヤヲニ,エコ゚ツ ウイオン゙ケワサネォキモュキォウイノンコチ゚メヌナイゥフュ,カヒウネェ ネ,ホノケ,ムュキ ッボーミュハ,チ ツス ィ メウイマヤ,゙ウチ ヅ ロ,ォジヌェ ャヌット ェ,マャ,チナエヒネソキツテ トホヲヲミーァ

                                How do I collapse sections of code in Visual Studio Code for Windows?