FAQ: Learn Java: Manipulating Variables - Order of Operations

This community-built FAQ covers the “Order of Operations” exercise from the lesson “Learn Java: Manipulating Variables”.

Paths and Courses
This exercise can be found in the following Codecademy content:

Build Basic Android Apps with Java

Learn Java

FAQs on the exercise Order of Operations

There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply (reply) below.

If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!
You can also find further discussion and get answers to your questions over in Language Help.

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head to Language Help and Tips and Resources. If you are wanting feedback or inspiration for a project, check out Projects.

Looking for motivation to keep learning? Join our wider discussions in Community

Learn more about how to use this guide.

Found a bug? Report it online, or post in Bug Reporting

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!

The order of operations dictates the order in which an expression (like the one above) is evaluated.

The order should be as follows:

  1. Parentheses
  2. Multiplication, Division or Modulo, priority from left to right(4 % 3 * 5- 2 + 1 is equal to 5*(4 % 3) - 2 + 1)
  3. Addition or Subtraction, priority from left to right
11 Likes
int expression3 = 5 * 4 % 3 - 2 + 1;

According to the result, the answer to this expression is 1. However, when I’ve calculated it, I’ve got the answer 4.

Can anyone explain how the above expression from this code works out to be 1? I am baffled, though admittedly rusty with the maths.

Many thanks,

2 Likes

5 * 4 % 3 - 2 + 1,

We solve the multiplication first so 5 * 4 = 20, giving us

20 % 3 - 2 + 1

We then solve the modulo, 20 % 3 = 2, giving us

2 - 2 + 1

We then simple solve the equation left to right with the remaining addition/subtraction, giving us 1. The comment above demonstrates the correct order of operations as I don’t think the order given in the module is quite accurate.

2 - 2 + 1
that should give us -1 right? 2-3 = -1

1 Like

ice_01 the compiler gives priority for addition and subtraction left to right. The instruction in the Codecademy exercise leads you to believe that addiction comes first. But, either addition or subtraction could come first depending on their placement from left to right. SO, in this case, 2-2 = 0, and then 0+1 = 1.

Hence: int expression3 = 5 * 4 % 3 - 2 + 1; evaluates to +1
5*4 = 20
20%3 = 2
2-2 = 0
0+1 = +1

5 Likes

Thanks! This is very helpful!

Just wanted to add that you can find a table of all the operators and their precedence here in the documentation.

Needless to say, someone should update the order of operations presented in this lesson.
When an expression contains both Addition and Subtraction, the one on the left is computed first.
Likewise, if an expression contains both Multiplication and Division, the one that appears on the left is computed first.

2 Likes

It said in an earlier lesson that when we print VARIABLES with System.out.println(), we do not use the double quotes “”. So why is it that when we’re printing the answer to these equations(-6, 1, and 3), they are put between double quotes? The correct answer looks like System.out.println("-6");
I thought they were an answer to a variable equation.
I’m confused now when to use double quotes when using System.out.println()

int expression3 = 5*4%3-2+1

First priority here multiplication so 54 = 20
Then 20%3-2+1
now priority is modulo so 20%3 that is remainder 3
6+2 that is 2
Then 2-2+1
Which is 1
Hope it cleared your doubt

1 Like

This tripped me up! Came here to make sure I wasn’t missing something ha.

                                                          int expression1 = 5 % 2 - (4 * 2 - 1); 

So I did — brackets first ----- 4*2 - 1

                 multiply first and then minus    = 7

               Then 5%2 = 2 ( not 2.5)                            =.  2. -  7.  =.  -5

HAS ANYONE GOT THE SAME? The answer is -6 !?

Hi,
The modulo operator represents the remainder after one number is divided by another number. 5 % 2 would equal 1, as 2 can go into 5 twice and have a remainder of 1. So it would be 1 - 7 = -6.

Hope this helps!

I came here with the purpose of posting the right order but I found your post, so thanks, it was confusing because in the lesson it shows the order as follows:
Modulo/Multiplication/Division
but it’s actually like this:
Multiplication/Division/Modulo
once you change the order you get the result.

Indeed someone should update the lesson to show the right order as in the Cheat Sheet:
Order of Operations

The order in which an expression with multiple operators is evaluated is determined by the order of operations: parentheses → multiplication → division → modulo → addition → subtraction.

double quotes is used only when you want to print what is inside the parenthesis. Eg: System.out.println(“today”); //prints today
eg: System.out.println(variables); //prints answers to your variables.

Hope this helps!

I got the same result as @ice_01 . According to penthas The order is as follows:

  1. Parentheses
  2. Exponents
  3. Modulo/Multiplication/Division
  4. Addition/Subtraction

so the way i understand it is , that addition would come first 2-2 + 1 = 2-3 = -1
What am i doing wrong?

You can see the Operator Precedence in Java here: Operators (The Java™ Tutorials > Learning the Java Language > Language Basics)

The multiplicative operators     * / %     (multiplication/division/modulo) have same precedence.
The additive operators     + -     (addition/subtraction) have lower precedence as compared to the multiplicative operators, but both addition and subtraction have same level of precedence.
When the level of precedence is same, then (from the above link):

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.

So, for the expression,

2 - 2 + 1
// Both subtraction and addition have equal precedence, so 
// they will evaluated from left to right.
0 + 1  // Subtraction completed
1 // Addition completed

Also, mathematically,
2 - 2 + 1    ≠    -1

Instead,
2 - 2 + 1    equals    1

It would be correct if the expression was different i.e.
2 - 2 - 1    equals    -1

It would be also be correct if the expression were
2 - (2 + 1)    equals    -1

1 Like

Thank you , this helps a lot !

1 Like