HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <h2>Транскрипт урока</h2>
1 <h2>Транскрипт урока</h2>
2 <p>Конечно, компьютеры отлично справляются с вычислениями чисел. И когда дело касается простой математики, JavaScript довольно прямолинеен. Есть пять основных операций: сложение, вычитание, умножение, деление и остаток от деления. Ещё есть скобки, как и в обычной математике, которые помогают явно указывать последовательность вычислений.</p>
2 <p>Конечно, компьютеры отлично справляются с вычислениями чисел. И когда дело касается простой математики, JavaScript довольно прямолинеен. Есть пять основных операций: сложение, вычитание, умножение, деление и остаток от деления. Ещё есть скобки, как и в обычной математике, которые помогают явно указывать последовательность вычислений.</p>
3 <p>Взгляните на это: 25 * 91. 25 и 91 называются<strong>операндами</strong>, а звёздочка -<strong>оператором</strong>умножения.</p>
3 <p>Взгляните на это: 25 * 91. 25 и 91 называются<strong>операндами</strong>, а звёздочка -<strong>оператором</strong>умножения.</p>
4 <p>Вот немного более усложнённый пример: ((12 * 5) - 4) / 12.</p>
4 <p>Вот немного более усложнённый пример: ((12 * 5) - 4) / 12.</p>
5 <p>В начале JavaScript производит умножение, затем вычитает 4, поскольку есть скобки, а потом делит результат на 12.</p>
5 <p>В начале JavaScript производит умножение, затем вычитает 4, поскольку есть скобки, а потом делит результат на 12.</p>
6 <p>Все операторы здесь<strong>инфиксные</strong>: они находятся между операндами (в данном случае - между числами). Ещё есть<strong>префиксные</strong>операторы (например, знак минус, который обозначает отрицательное число: -5) и<strong>постфиксные</strong>(например, быстрое увеличение на один: x++). Мы изучим их позже.</p>
6 <p>Все операторы здесь<strong>инфиксные</strong>: они находятся между операндами (в данном случае - между числами). Ещё есть<strong>префиксные</strong>операторы (например, знак минус, который обозначает отрицательное число: -5) и<strong>постфиксные</strong>(например, быстрое увеличение на один: x++). Мы изучим их позже.</p>
7 <p>В какой-то момент вы столкнётесь с необычной проблемой: если вы попытаетесь сложить 0.1 + 0.2 в JavaScript, результатом будет 0.30000-много-много-нулей-4, а не 0.3. Это потому что компьютеры хранят числа в другом формате. Глубоко внутри все числа - это множество единиц и нулей, подчинённых определённым правилам, и это не лучший формат для хранения любых чисел.</p>
7 <p>В какой-то момент вы столкнётесь с необычной проблемой: если вы попытаетесь сложить 0.1 + 0.2 в JavaScript, результатом будет 0.30000-много-много-нулей-4, а не 0.3. Это потому что компьютеры хранят числа в другом формате. Глубоко внутри все числа - это множество единиц и нулей, подчинённых определённым правилам, и это не лучший формат для хранения любых чисел.</p>
8 <p>Это может показаться нелепым - почему мы позволяем компьютерам использовать такую плохую систему? На самом деле она не настолько плохая или глупая. Такой формат удобен для определённого набора задач и не слишком удобен для другого.</p>
8 <p>Это может показаться нелепым - почему мы позволяем компьютерам использовать такую плохую систему? На самом деле она не настолько плохая или глупая. Такой формат удобен для определённого набора задач и не слишком удобен для другого.</p>
9 <p>Также в JavaScript есть несколько терминов, которые нужны для формулировки определённых значений: разделите положительное число на 0 и получится "Бесконечность" - Infinity; разделите отрицательное число на 0 и получится "-Бесконечность" - -Infinity. В своих программах вы можете использовать Бесконечности как числа с другими операторами. Например, с Бесконечностью можно производить сложение.</p>
9 <p>Также в JavaScript есть несколько терминов, которые нужны для формулировки определённых значений: разделите положительное число на 0 и получится "Бесконечность" - Infinity; разделите отрицательное число на 0 и получится "-Бесконечность" - -Infinity. В своих программах вы можете использовать Бесконечности как числа с другими операторами. Например, с Бесконечностью можно производить сложение.</p>
10 <p>Иногда вычисления не производят конкретного числа. Разделите 0 на строку и получится что-то не числовое. Нельзя сказать, что это ничто, это… просто не число. У JavaScript есть термин для такого понятия - NaN, который образован из "Not a Number" (не число).</p>
10 <p>Иногда вычисления не производят конкретного числа. Разделите 0 на строку и получится что-то не числовое. Нельзя сказать, что это ничто, это… просто не число. У JavaScript есть термин для такого понятия - NaN, который образован из "Not a Number" (не число).</p>
11 <p>Как и Бесконечность, NaN можно использовать в вычислениях с другими математическими операторами. Но Not a Number как бы всех подводит: если он присутствует в вычислении, результатом всегда будет NaN.</p>
11 <p>Как и Бесконечность, NaN можно использовать в вычислениях с другими математическими операторами. Но Not a Number как бы всех подводит: если он присутствует в вычислении, результатом всегда будет NaN.</p>
12 <p>Вот случайный вопрос: какого размера Марс? Его радиус - 3390 километров, он почти в два раза меньше Земли. Но мы, конечно, заинтересованы там жить, поэтому нам важно, сколько у нас будет поверхности. Другими словами, какая площадь поверхности у Марса?</p>
12 <p>Вот случайный вопрос: какого размера Марс? Его радиус - 3390 километров, он почти в два раза меньше Земли. Но мы, конечно, заинтересованы там жить, поэтому нам важно, сколько у нас будет поверхности. Другими словами, какая площадь поверхности у Марса?</p>
13 <p>Может, вы помните формулу: площадь поверхности сферы равна 4πr^2^. r - это радиус, а π примерно 3.14.</p>
13 <p>Может, вы помните формулу: площадь поверхности сферы равна 4πr^2^. r - это радиус, а π примерно 3.14.</p>
14 <p>Давайте вычислим это в JavaScript:</p>
14 <p>Давайте вычислим это в JavaScript:</p>
15 <p>Теперь представьте как вычислить площадь поверхности другой планеты. Например, Меркурия:</p>
15 <p>Теперь представьте как вычислить площадь поверхности другой планеты. Например, Меркурия:</p>
16 <p>Этот новый код точно такой же, как и предыдущий, изменился только радиус. Если мы продолжим в таком же стиле, нам понадобится писать значение π самим каждый раз. Так не пойдёт, мы не хотим повторений в своих программах.</p>
16 <p>Этот новый код точно такой же, как и предыдущий, изменился только радиус. Если мы продолжим в таком же стиле, нам понадобится писать значение π самим каждый раз. Так не пойдёт, мы не хотим повторений в своих программах.</p>
17 <p>Мы можем заставить компьютер "помнить", что такое π и использовать это в вычислениях. Такой механизм называется "константы". Давайте создадим новую константу со значением числа π:</p>
17 <p>Мы можем заставить компьютер "помнить", что такое π и использовать это в вычислениях. Такой механизм называется "константы". Давайте создадим новую константу со значением числа π:</p>
18 <p>const - это специальное ключевое слово, после него - идентификатор - название вашей константы, затем знак равенства и значение.</p>
18 <p>const - это специальное ключевое слово, после него - идентификатор - название вашей константы, затем знак равенства и значение.</p>
19 <p>Теперь мы можем писать "pi" вместо того, чтобы вводить вручную 3.14.</p>
19 <p>Теперь мы можем писать "pi" вместо того, чтобы вводить вручную 3.14.</p>
20 <p>Кстати, двойной слеш и текст после него - это<strong>комментарии</strong>: JavaScript просто игнорирует их и они не влияют на работу кода. Мы пишем комментарии для себя и других людей, чтобы легче понимать код.</p>
20 <p>Кстати, двойной слеш и текст после него - это<strong>комментарии</strong>: JavaScript просто игнорирует их и они не влияют на работу кода. Мы пишем комментарии для себя и других людей, чтобы легче понимать код.</p>
21 <p>Давайте поместим площадь поверхности Марса в другую константу:</p>
21 <p>Давайте поместим площадь поверхности Марса в другую константу:</p>
22 <p>Теперь surface это другой идентификатор, в нём хранится<strong>результат</strong>вычисления. Тогда как это вычисление произвелось? Ну, во-первых, JavaScript должен вспомнить что такое pi, а потом заменить его на число, значение:</p>
22 <p>Теперь surface это другой идентификатор, в нём хранится<strong>результат</strong>вычисления. Тогда как это вычисление произвелось? Ну, во-первых, JavaScript должен вспомнить что такое pi, а потом заменить его на число, значение:</p>
23 <p>А затем идут умножения слева направо, потому что у нас нет скобок:</p>
23 <p>А затем идут умножения слева направо, потому что у нас нет скобок:</p>
24 <p>Мы можем вывести результат на экран с console.log: console.log(surface). Заметьте, что в этот раз мы не писали кавычки. Мы не будем выводить слово "surface". Это не строка. Мы выводим значение константы, называемой "surface".</p>
24 <p>Мы можем вывести результат на экран с console.log: console.log(surface). Заметьте, что в этот раз мы не писали кавычки. Мы не будем выводить слово "surface". Это не строка. Мы выводим значение константы, называемой "surface".</p>
25 <p>Теперь ваша очередь. Переходите к тестам и упражнению. Вы узнаете как много энергии в вашем теле, благодаря Эйнштейну.</p>
25 <p>Теперь ваша очередь. Переходите к тестам и упражнению. Вы узнаете как много энергии в вашем теле, благодаря Эйнштейну.</p>
26 <h2>Дополнение к уроку</h2>
26 <h2>Дополнение к уроку</h2>
27 <h3>Возведение в степень</h3>
27 <h3>Возведение в степень</h3>
28 <p>Стандарт es7 вводит новый оператор **, полезный при возведении в степень:</p>
28 <p>Стандарт es7 вводит новый оператор **, полезный при возведении в степень:</p>
29 <p>Другой способ возвести число в степень:</p>
29 <p>Другой способ возвести число в степень:</p>
30 <h3>Почему константы?</h3>
30 <h3>Почему константы?</h3>
31 <p>Возможно у вас возник вопрос: "почему константы, а не переменные?". Константы гораздо проще, чем переменные. Они всегда однозначно определены и никогда не меняются. В школе и в ВУЗе, в математике и физике мы имели дело только с константами.</p>
31 <p>Возможно у вас возник вопрос: "почему константы, а не переменные?". Константы гораздо проще, чем переменные. Они всегда однозначно определены и никогда не меняются. В школе и в ВУЗе, в математике и физике мы имели дело только с константами.</p>
32 <p>В будущих уроках вы увидите, что единственное место, где требуются переменные - это циклы. Практически во всех других случаях они не нужны, и их присутствие усложняет код (мы объясним это позже в курсе).</p>
32 <p>В будущих уроках вы увидите, что единственное место, где требуются переменные - это циклы. Практически во всех других случаях они не нужны, и их присутствие усложняет код (мы объясним это позже в курсе).</p>
33 <h3>Арность</h3>
33 <h3>Арность</h3>
34 <p>Арность - это количество аргументов. Операторы +, -, * и / применяются к двум операндам. В таком случае их арность составляет 2, поэтому мы можем называть эти операторы<em>бинарными</em>.</p>
34 <p>Арность - это количество аргументов. Операторы +, -, * и / применяются к двум операндам. В таком случае их арность составляет 2, поэтому мы можем называть эти операторы<em>бинарными</em>.</p>
35 <p>Есть ещё один оператор, который выглядит как двоичный минус, но он унарный (одинарный). Это когда - используется для обозначения отрицательного числа, например -327.</p>
35 <p>Есть ещё один оператор, который выглядит как двоичный минус, но он унарный (одинарный). Это когда - используется для обозначения отрицательного числа, например -327.</p>
36 <p>Ещё бывают<em>тернарные</em>(троичные) операторы, но вы их встретите позже.</p>
36 <p>Ещё бывают<em>тернарные</em>(троичные) операторы, но вы их встретите позже.</p>
37 <h3>Ассоциативность</h3>
37 <h3>Ассоциативность</h3>
38 <p>Ассоциативность (или фиксированность) определяет, как операторы группируются при отсутствии скобок. Рассмотрим выражение a ~ b ~ c. Если у оператора ~ левая ассоциативность, это выражение будет трактоваться как (a ~ b) ~ c.</p>
38 <p>Ассоциативность (или фиксированность) определяет, как операторы группируются при отсутствии скобок. Рассмотрим выражение a ~ b ~ c. Если у оператора ~ левая ассоциативность, это выражение будет трактоваться как (a ~ b) ~ c.</p>
39 <h3>Undefined</h3>
39 <h3>Undefined</h3>
40 <p>Рассмотрим следующий код:</p>
40 <p>Рассмотрим следующий код:</p>
41 <p>Что в этом случае выведется на экран? Современный JavaScript вообще не позволит вам создать константу без значения, но если позволит, полученный console.log выведет undefined. Это специальный идентификатор.</p>
41 <p>Что в этом случае выведется на экран? Современный JavaScript вообще не позволит вам создать константу без значения, но если позволит, полученный console.log выведет undefined. Это специальный идентификатор.</p>
42 <p>Вы можете установить значение undefined сами, вот таким способом:</p>
42 <p>Вы можете установить значение undefined сами, вот таким способом:</p>
43 <p>Но самому этого делать не стоит.</p>
43 <p>Но самому этого делать не стоит.</p>
44 <h2>Выводы</h2>
44 <h2>Выводы</h2>
45 <ul><li>Математика в JavaScript выглядит и воспринимается как привычная математика:<ul><li>Символы +, -, *, / означают то, что вы думаете.</li>
45 <ul><li>Математика в JavaScript выглядит и воспринимается как привычная математика:<ul><li>Символы +, -, *, / означают то, что вы думаете.</li>
46 <li>Ещё есть символ % - остаток от деления. Он вычисляет остаток от деления первого операнда на второй. Например, 11 % 5 это 1, а 10 % 2 это 0.</li>
46 <li>Ещё есть символ % - остаток от деления. Он вычисляет остаток от деления первого операнда на второй. Например, 11 % 5 это 1, а 10 % 2 это 0.</li>
47 <li>Есть Infinity и -Infinity.</li>
47 <li>Есть Infinity и -Infinity.</li>
48 <li>Когда вычисление оказывается не числом, JavaScript использует NaN, который означает "не число" (Not a Number). Например: 0/"word" это NaN<ul><li>Если в вычислении присутствует NaN, то результатом всегда будет NaN. Например: 120 + 5 / NaN это NaN</li>
48 <li>Когда вычисление оказывается не числом, JavaScript использует NaN, который означает "не число" (Not a Number). Например: 0/"word" это NaN<ul><li>Если в вычислении присутствует NaN, то результатом всегда будет NaN. Например: 120 + 5 / NaN это NaN</li>
49 </ul></li>
49 </ul></li>
50 </ul></li>
50 </ul></li>
51 <li>Заставьте компьютер "помнить" что-нибудь, создав константу. Например: const age = 39;</li>
51 <li>Заставьте компьютер "помнить" что-нибудь, создав константу. Например: const age = 39;</li>
52 </ul>
52 </ul>