Incorrect answer for modulo operator

https://www.codecademy.com/courses/learn-java/lessons/learn-java-manipulating-variables/exercises/order-of-operations

My doubt is about this specific modulo operator on Line no. 10
int expression3 = 5 * 4 % 3 - 2 + 1;

As per my understanding starting with modulo first; 4 % 3 = 1
then 5*1 = 5; then the expression becomes 5 * 1 - 2+1
5-3=2 should be the answer.
But the answer show is 1, can someone explain how?

See documentation for Operator Precedence: Operators (The Java™ Tutorials > Learning the Java Language > Language Basics)

The operators in the following table are listed according to precedence order. The closer to the top of the table an operator appears, the higher its precedence. Operators with higher precedence are evaluated before operators with relatively lower precedence. Operators on the same line have equal precedence. When operators of equal precedence appear in the same expression, a rule must govern which is evaluated first. All binary operators except for the assignment operators are evaluated from left to right; assignment operators are evaluated right to left.

The multiplicative operators * / % have equal precedence, so they will be evaluated from left to right.

int expression3 = 5 * 4 % 3 - 2 + 1;
//
// * and % have equal precedence, but going from left to right, * is evaluated first.
(5 * 4) % 3 - 2 + 1
20 % 3 - 2 + 1
2 - 2 + 1
0 + 1
1
2 Likes

Ok, thanks for the explaination.