 # JavaScript Arithmetic Operators

Most arithmetical operators in JavaScript - including addition, subtraction, division and multiplication - work just as you might expect. However, there are several edge cases that can make for some confusing exceptions, and several additional operators that you may not be familiar with.

## Addition: `+`

Works exactly as you might expect. In the console:

``````1 + 1
> 2
var a = 2, b = 4;
a + b;
> 6``````

However, there are some oddities. Adding strings creates concatenation:

``````"Bill" + "Oddy";
> BillOddy``````

…while adding Boolean values creates numerical results that correspond to Boolean states:

``````var a = true, b = false;
a + b;
> 1
var a = false, b = 0;
a + b;
> 0``````

## Increment: `++`

Adds 1 to the current number; frequently used in loops.

``````var i = 12;
i++;
> 13``````

## Subtraction: `-`

Performs just like the mathematical operator, including the production of negative numbers:

``````var x = 22, y = 42;
x - y;
> -20``````

## Decrement: `--`

Subtracts 1 from the current number. Again, often used in loops.

``````var m = 22;
m--;
> 21``````

## Division: `/`

Division works as expected:

``````var numerator = 2, divisor = 3;
numerator / divisor;
> 0.666666``````

Division by 0 is a problem, obviously:

``````2 / 0
> Infinity``````

## Multiplication: `*`

Also works as expected; note that the operator is the asterisk symbol, not `x`.

``````var bird = 2, hand = 3, bush = 4;
bird * hard * bush;
> 24``````

## Modulus: `%`

Divides two values and provides the remainder. Frequently used with time, date and calendar operations.

``````6 % 4
> 2``````

(Meaning: 6 can be divided by 4 once, leaving 2 left over)

There’s a known, long-standing bug in JavaScript that leaves modulo arithmetic incorrect in some cases: a modulo operation should never result in a negative, but dividing a negative number by a positive one will do just that:

``````-5 % 4
> -1``````

## Order of Operations

In JavaScript, multiplication and division happen before addition and subtraction; order of execution doesn’t depend on the order of operators in this case. This can lead to poorly-written expressions creating unexpected results:

``````2 + 4 * 5
> 22``````

To make the order clear, place terms in parentheses: these will be executed first:

``````(2 + 4) * 5
> 30``````