Lesson Weekend

### Assignment Operators

We've already seen how we can use the `=` operator to set a variable equal to a value.

``````> var favoriteNumber = 42;
> favoriteNumber;
42
``````

The `=` is called an assignment operator because it assigns the value on the right of the operator to the variable on the left. In the above example, favoriteNumber is assigned the value 42.

Another assignment operator is the `+=` operator, because it too assigns a new value to the variable on the left based on the value to the right.

``````> var myNumber = 5;
> myNumber += 1;
> myNumber;
6
``````

There is an assignment operator for each of the mathematical functions: addition, subtraction, multiplication and division.

``````+=
-=
*=
/=
``````

When you use any of these assignment operators, the value of the variable on the left side is changed by the math operation and value on the right. Let's do one of each:

``````>var testNumber = 10;
>testNumber += 5;
>testNumber;
15
> testNumber -= 9;
>testNumber;
6
>testNumber *= 3;
>testNumber;
18
>testNumber /= 2
>testNumber;
9
``````

### Comparison Operators

Assignment operators change the value of the variable on the left of the operator. Comparison operators do not change any values, but return `true` or `false` depending on whether the statement evaluates as true or false.

``````> var myNumber = 5;
> myNumber < 10;
true
> myNumber > 10;
false
> myNumber === 10;
false
> myNumber === 5;
true
``````

Notice the triple equals operator. When we're asking whether something is equal, we use `===` (3 equal signs). When we're setting a variable equal to something, we use `=` (single equal sign). Mixing these up is one of the easiest syntax errors to make.

JavaScript also has an operator with 2 equal signs, but it is almost never used, and you should generally avoid it. It does things like return true for "2" == 2, but many of its rules are confusing, inconsistent, and hard to remember.

You should have seen that the comparison operators return one of two values: `true` or `false`. Notice that there are no quotes around these values. `true` and `false` aren't strings - they're called booleans. They simply represent being true or false.

Comparison operators work for strings as well.

``````> var greeting = "hello world";
> greeting === "hello world";
true
> greeting === "goodbye";
false
``````

Notice that if you type `greeting` after this, you will see that the variable greeting still contains the string "hello world". Comparison operators do not change the value of the variable. Let's look at another example to illustrate that important difference between assignment operators and comparison operators.

``````> var myNumber = 5;
> myNumber === 5;
true
> myNumber === 10;
false
> myNumber = 10;
> myNumber === 10;
true
> myNumber === 5;
false
``````

Common comparison operators:

• `===` means "equal-to". `5 === 5` or `"cat" === "cat"` evaluate to `true`, but `3 === 5` or `"cat" === "dog"` evaluate to `false`.
• `!==` means "not-equal-to". It is the opposite of `===`, so `"cat" !== "dog"` evaluates to `true`, but `5 !== 5` evaluates to `false`, because saying that 5 is not equal to 5 is not true.
• `>` means "greater-than (and not equal to)". `3 > 4` evaluates to `false`; `3 > 3` also evaluates to `false`, because 3 is equal to 3 and not greater; and `3 > 2` evaluates to `true`.
• `>=` is the same as `>`, except it evaluates to `true` if the two sides are equal. `3 >= 3` evaluates to `true`, and so does `3 >= 2`.
• `<` is the opposite of `>`. It means "less-than (and not equal to)". `3 < 5` evaluates to `true`. `3 < 3` evaluates to `false` because they are equal.
• `<=` is the opposite of `>=`. It means "less-than-or-equal-to". `3 <= 3` evaluates to `true` because 3 is equal to 3. `3 <= 1` evaluates to `false`, but `3 <= 5` evaluates to `true`.

## Terminology

• Boolean: `true` and `false` are booleans. They are not strings - they simply represent being true or false.

• Assignment operator: Changes the value of the variable on the left of the operator.

• Comparison operator: Does not change any values, but returns a boolean (`true` or `false`) depending on whether the statement evaluates as true or false.

## Commonly-Used Operators

Be aware of the difference between the `=` assignment operator and the `===` comparison operator.

### Assignment Operators

• `=` assign variable on left of operator value on right of operator
• `+=` increase value of variable on left of operator by value on right of operator
• `-=` decrease value of variable on left of operator by value on right of operator
• `*=` multiply value of variable on left of operator by value on right of operator
• `/=` divide value of variable on left of operator by value on right of operator

### Comparison Operators

• `===` is equal to
• `!==` is not equal to
• `>` greater than
• `>=` greater than or equal to
• `<` less than
• `<=` less than or equal to