Компьютер может работать только с данными: создавать, читать, изменять и т.п.
Все данные храняться в последовательностях бит.
Бит - это сущность с двумя состояниями: 0 или 1. В логических микросхемах это высокий и низкий уровень, например 0 или 5V для логики TTL.
Любая информация может быть представлена в виде последовательности бит. Например число 13 десятичной системы можно представить в виде двоичного числа:

 0   0  0  0 1 1 0 1	// 13  
128 64 32 16 8 4 2 1

00001101 = (1 + 4 + 8) = 13

Чтобы удобнее было работать с большим количеством бит их разделяют на части, представляющие собой единицы информации.
В JavaScript эти еденицы называют values (значением). У каждого values есть тип, определяющий его роль.
Типы данных в JavaScript могут быть следующих видов:

  • числа (number) ;
  • строки (string);
  • логические (boolean);
  • неопределенные (undefined, null);
  • объект (object).

Числа в JavaScript занимают фиксированное число бит (64), и записываются как 13, 3.14, 2.33e5.
В JavaScript есть три специальных значения, которые считаются числами: Infinity и -Infinity, которые представляют положительную и отрицательную бесконечности.
Infinity - 1 = Infinity,
Третье число: NaN - «not a number» (не число), хотя это величина числового типа, которую можно получить после вычислений типа:
0 / 0, Infinity - Infinity, или других операций, которые не ведут к точным осмысленным результатам.

Строки - базовый тип данных, который используются для хранения текста, записываются в кавычках:
"JavaScript a programming language"
'JavaScript fundamentals'
Можно использовать как двойные, так и одинарные кавычки.
Для представления специальных символов в виде строки используется обратный слеш \ «экранирование символов» (escape character):
\n - перевод строки,
\t - табуляция.
Что бы добавить в строку обратный слеш его тоже нужно экранировать \\.

Логический тип данных (boolean): это два варианта значения true (правда или логическая 1) и false (ложь или логический 0). Этот тип данных используется при применении операторов сравнения, логических операций и операторов ветвления.

Неопределенный тип данных null и undefined используются для обозначения отсутствия осмысленного значения. Сами по себе никакой информации не несут. Много операторов, которые не возвращают значения, возвращают undefined. Разница между undefined и null появилась в языке случайно и обычно не имеет значения.

Для определения типа данных, записанных в переменной, можно воспользоваться оператором typeof.

JavaScript data types

Унарный оператор взаимодействует с одним значение, бинарный с двумя. В JavaScript для арифметических операций используются бинарные операторы (+, -, *, / и %), для объединения строк (+), для сравнение (==, !=, ===, !==, <, >, <=, >=) и логические операторы (&&, ||), а также несколько унарных операторов (- для отрицательного значения, ! для логического отрицания и typeof для определения типа величины).

Логический тренарный оператор записывается при помощи вопросительного знака и двоеточия:

console.log(true ? 1 : 2);
// → 1 
console.log(false ? 1 : 2 );
// → 2

Это условный оператор,у которого величина слева от вопросительного знака выбирает одну из двух величин, разделённых двоеточием. Когда величина слева true, выбираем первое значение, а когда false второе.

Логические операторы при использовании с булевыми значениями возвращают булево значение, но логические операторы || и && при работе со значениями не булевых типов сначала преобразуют величину с левой стороны оператора в булевую и на основании этого возвращают оригинальное значение левой или правой части.

Short calculation of logical operators

Хоть операторы && и || могут использовать операнды с не булевыми значениями, но они всё равно рассматриваются, как булевы операторы, так как возвращаемые ими значения всегда могут быть сконвертированы в булевы значения.
Значений выражений, которые могут быть преобразованы в false: null, NaN, 0, "", undefined.
Такая работа оператора || позволяет использовать его как откат к значению по умолчанию. Если задать ему выражение, которое может вернуть пустое значение слева, то в этом случае произойдет замена на значение справа.
Оператор && работает сходным образом, только наоборот. Если величина слева преобразовывается в false, возвращается эта величина, иначе – величина справа.
Ещё одно важное свойство – выражение в правой части вычисляется только при необходимости.

Оператор ! возвращает false если значение можно привести к true, в противоположном случае возвращает true.