Arithmetic operators in Javascript - Time & Space Complexity
We want to see how the time to run arithmetic operations changes as we do more of them.
How does the number of calculations affect the total time?
Analyze the time complexity of the following code snippet.
let sum = 0;
for (let i = 0; i < n; i++) {
sum += i + 2 * 3 - 1;
}
// return sum; (removed return statement as it's invalid outside a function)
This code adds up a simple arithmetic expression for each number from 0 to n-1.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The arithmetic calculation inside the loop.
- How many times: It runs once for each number from 0 to n-1, so n times.
Each time n grows, the number of arithmetic operations grows the same amount.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 calculations |
| 100 | 100 calculations |
| 1000 | 1000 calculations |
Pattern observation: The work grows directly with n, so doubling n doubles the work.
Time Complexity: O(n)
This means the time to finish grows in a straight line as the input size grows.
[X] Wrong: "Arithmetic operations inside a loop take constant time no matter how many times the loop runs."
[OK] Correct: Each arithmetic operation is fast, but doing many of them adds up, so total time grows with the number of loop runs.
Understanding how simple calculations add up helps you explain how programs handle bigger data smoothly.
"What if we replaced the arithmetic inside the loop with another loop? How would the time complexity change?"
Practice
Solution
Step 1: Understand the remainder operator
The operator%returns the remainder after division of two numbers.Step 2: Compare with other operators
/is division,**is power, and*is multiplication, so they don't give remainder.Final Answer:
% -> Option AQuick Check:
Remainder operator = % [OK]
- Confusing division / with remainder %
- Using * or ** instead of %
- Thinking + or - can give remainder
Solution
Step 1: Identify the power operator in JavaScript
JavaScript uses**to calculate powers, like 5 ** 3 means 5 to the power 3.Step 2: Check other options for correctness
^is bitwise XOR,^^is invalid syntax, andpow()is not a built-in function in JavaScript.Final Answer:
5 ** 3 -> Option AQuick Check:
Power operator = ** [OK]
- Using ^ instead of ** for power
- Trying to use pow() like in other languages
- Typing invalid operators like ^^
console.log(10 % 4);
Solution
Step 1: Calculate 10 divided by 4
10 divided by 4 is 2 with a remainder of 2.Step 2: Understand the % operator
The % operator returns the remainder, so 10 % 4 equals 2.Final Answer:
2 -> Option CQuick Check:
10 % 4 = 2 [OK]
- Confusing remainder with quotient
- Thinking % does division
- Choosing 0 or 4 as remainder incorrectly
let result = 5 **; console.log(result);
Solution
Step 1: Check the power operator usage
The power operator**needs two operands, like5 ** 2. Here, the right operand is missing.Step 2: Verify other parts of the code
The variable name and console.log syntax are correct, so no errors there.Final Answer:
Missing right operand for ** operator -> Option DQuick Check:
Power operator needs two numbers [OK]
- Leaving out the second number after **
- Thinking variable names cause error here
- Assuming console.log is wrong
Solution
Step 1: Understand the problem
We want the leftover candies after dividing 100 by 6, which means the remainder.Step 2: Choose the correct operator
The remainder operator%gives the leftover amount, so100 % 6is correct.Final Answer:
100 % 6 -> Option BQuick Check:
Leftover = total % number [OK]
- Using / which gives quotient, not remainder
- Subtracting numbers directly instead of remainder
- Using power operator mistakenly
Ready to prove it?
Pass the test and this pattern moves unknown
