In one example from http://leepoint.net/notes-java/data/expressions/precedence.html
The following expression
1 + 2 - 3 * 4 / 5 Is evaluated as
1 + 2 - 3 * 4 / 5 = (1 + 2) - ((3 * 4) / 5) = 3 - (12/5) = 3 - 2 The result of the integer division, 12/5, is 2 . = 1 Then i saw another example from http://www.roseindia.net/java/master-java/operator-precedence.shtml
The following expression
4 + 5 * 6 / 3 is evaluated as
4 + (5 * (6 / 3)) I am slightly confused as to how it is decided which will be evaluated first when * and / are involved. In the examples above, both seem to be difference.
The first example is evaluating 3*5/5 as ((3*4)/5) Whereas the second example is evaluating 5*6/3 as (5*(6/3))
I know that * and / have precedence over + and - but what about when the expression includes both * and /. And also why are the above two examples showing different approaches? Is one of them wrong?
Edit
public class ZiggyTest { public static void main(String[] args) { System.out.println(4 + (5 * (6 / 3))); System.out.println(4 + ((5 * 6) / 3)); System.out.println(1 + 2 - (3 * (4 / 5))); System.out.println(1 + 2 - ((3 * 4) / 5)); } } The above program produces the output
14 14 3 1 Why are the last two outputs not the same if the first produced the same output.
4 + 5 * 6 / 3is being evaluated as4 + (5 * (6 / 3))It just happens to give the same result when evaluated properly (4 + ( ( 5 * 6 ) / 3 )).