Основные операторы


Операторы бывают
- унарные
        +1, -1, а++, а--, ++а, --а, typeof 2.
Да, typeof тоже оператор
-  бинарные
        1 + 1, 4 * 3, 13 % 5
- тенарный
такой оператор один-единственный. это условие
        а == 3 ? 3 : 0
смысл этой записи: если а равно трём, тогда возвращается три, иначе - ноль

Любой оператор возвращает значение.
Например, 5 + 3 возвращает 8.
typeof 2 возвращает number

То, к чему применяется оператор, называется операнд

Особенности некоторых операторов

Плюс +

1. суммирует числа
        2 + 2 возвращает 4
2. слагает строки и превращает в строку всё, к чему строка прибавляется
        "2" + 2 возвращает "22"
3. унарный плюс превращает строку в число
        +"2" возвращает 2

Все остальные арифметические операторы стараются привести операнд к числу

Несложные задачи

1. Что выведет данный код
"2" + 1;
+"2" + 1;
"2" - 1;

2. Что выведет данный код
"3" + 1 + 1;
1 + 1 + "3";


Взятие остатка %
Возвращает остаток от деления
26 % 5 возвращает 1
13 % 5 возвращает 3

Пример использования
Например, чтобы правильно указывать окончание "день - дня - дней"

var n = prompt("Введите число дней", "");
var k = n % 10;
if (k == 1) {
  alert("Вы ввели " + n + " день");
}
else if (k > 1 && k <= 4) {
  alert("Вы ввели " + n + " дня");
}
else if (k == 0 || k > 4) {
  alert("Вы ввели " + n + " дней");
}

Равно =

= - это присвоение
  var k = 24;
== - это сравнение, но без учёта типа. Возвращает булево значение true или false
  false == 0;  // true
  [] == false;  // true
  "" == 0;   // true
=== - это сравнение с учётом типа.  Возвращает false если или значение или тип величин не совпадают
  0 === false; // false

Инкрементация и декрементация

Здесь просто. Инкрементация увеличивает на единицу, декрементация уменьшает. Нужны для перебора элементов массива:

    for( var i = 0; i < arr.length; i++) {
        // здесь что-то делаем с элементом массива
  }

Инкрементация и декрементация бывают префиксная и постфиксная.
Префиксная это понятно. Вначале переменную увеличили (уменьшили) на один, потом вернули.

Проблему вызывает постфиксная инкрементация/декрементация, когда переменная увеличивается или уменьшается на 1, но возвращается её старое значение. Почти 700 комментариев к теме связаны именно с этой её особенностью.

В общем, такое поведение нужно просто принять

    var a = 2;
    alert( a++); // 2 - возвращает значение до увеличения
    alert( a ); // 3 - возвращает новое значение после увеличения

Приоритет операторов

Статья на MDN https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
Там же есть таблица приоритетов.