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