diff --git a/1-js/02-first-steps/08-operators/article.md b/1-js/02-first-steps/08-operators/article.md
index a83cc9121..4ae61a3de 100644
--- a/1-js/02-first-steps/08-operators/article.md
+++ b/1-js/02-first-steps/08-operators/article.md
@@ -1,6 +1,6 @@
# Базові оператори, математика
-Зі шкільної програми, ми знаємо багато арифметичних операцій, такі як додавання `+`, множення `*`, віднімання `-` тощо.
+Зі шкільної програми ми знаємо багато арифметичних операцій, таких як додавання `+`, множення `*`, віднімання `-` тощо.
У цьому розділі ми почнемо з простих операторів, потім зосередимося на специфічних для JavaScript аспектах, які не охоплені шкільною арифметикою.
@@ -19,14 +19,14 @@
*/!*
alert( x ); // -1, було застосоване унарне заперечення
```
-- Оператор є *бінарним*, якщо він має два операнди. Цей же мінус існує також в бінарній формі:
+- Оператор є *бінарним*, якщо він має два операнди. Наприклад, оператор мінус можна використовувати і у бінарній формі:
```js run no-beautify
let x = 1, y = 3;
alert( y - x ); // 2, бінарний мінус віднімає значення
```
- Формально, в прикладах вище ми маємо два різні оператори, які позначаються однаковим символом: оператор заперечення – унарний оператор, який змінює знак числа, та оператор віднімання – бінарний оператор, який віднімає одне число від іншого.
+ Формально, у прикладах вище ми маємо два різні оператори, які позначаються однаковим символом: оператор заперечення -- унарний оператор, який змінює знак числа, та оператор віднімання -- бінарний оператор, який віднімає одне число від іншого.
## Математика
@@ -43,7 +43,7 @@ JavaScript підтримує такі математичні операції:
### Остача від ділення %
-Оператор остачі `%`, попри свій зовнішній вигляд, не пов’язаний з відсотками.
+Оператор остачі `%`, попри свій зовнішній вигляд, не пов’язаний із відсотками.
Результатом `a % b` є [остача](https://uk.wikipedia.org/wiki/Остача) цілочислового ділення `a` на `b`.
@@ -58,7 +58,7 @@ alert( 8 % 3 ); // 2 — остача від ділення 8 на 3
Оператор піднесення до степеня `a ** b` множить `a` саме на себе `b` разів.
-В школі, ми записуємо це як ab.
+У школі ми записуємо це як ab.
Наприклад:
@@ -68,7 +68,7 @@ alert( 2 ** 3 ); // 2³ = 8
alert( 2 ** 4 ); // 2⁴ = 16
```
-Так само як в математиці, оператор піднесення також можна використовувати для дробових чисел.
+Так само як у математиці, оператор піднесення також можна використовувати для дробових чисел.
Наприклад, квадратний корінь це піднесення до степеня ½:
@@ -108,14 +108,14 @@ alert( 2 + '1' ); // "21"
alert(2 + 2 + '1' ); // "41", а не "221"
```
-Тут оператори виконуються один за одним. Перший `+` додає два числа, тому він поверне `4`; а наступний оператор `+` вже додасть (об’єднає) попередній результат з рядком `1`. У підсумку ми отримаємо рядок `'41'` (`4 + '1'`).
+Тут оператори виконуються один за одним. Перший `+` додає два числа, тому він поверне `4`; а наступний оператор `+` вже додасть (об’єднає) попередній результат із рядком `1`. У підсумку ми отримаємо рядок `'41'` (`4 + '1'`).
```js run
alert('1' + 2 + 2); // "122", а не "14"
```
-В цьому прикладі, перший операнд — рядок, тому компілятор також опрацьовує інші два операнди як рядки. Операнд `2` приєднується (конкатенується) до `'1'`, тому в результаті буде `'1' + 2 = "12"`, а потім — `"12" + 2 = "122"`.
+У цьому прикладі перший операнд -- рядок, тому компілятор також опрацьовує інші два операнди як рядки. Операнд `2` приєднується (конкатенується) до `'1'`, тому в результаті буде `'1' + 2 = "12"`, а потім — `"12" + 2 = "122"`.
-Лише бінарний `+` працює з рядками таким чином. Інші арифметичні оператори працюють тільки з числами й завжди перетворюють свої операнди на числа.
+Лише бінарний `+` працює з рядками так. Інші арифметичні оператори працюють тільки з числами й завжди перетворюють свої операнди на числа.
Ось приклад, як працює віднімання й ділення:
@@ -126,9 +126,9 @@ alert( '6' / '2' ); // 3, обидва операнди перетворюють
## Числове перетворення, унарний +
-Плюс `+` існує у двох формах: бінарна форма, яку ми використовували вище, та унарна форма.
+У оператора плюс `+` є дві форми: бінарна, яку ми використовували вище, та унарна.
-Унарний плюс або, іншими словами, оператор плюс `+`, застосований до єдиного операнда, нічого не зробить, якщо операнд є числом. Але якщо операнд не є числом, унарний плюс перетворить його на число.
+Унарний плюс або, іншими словами, оператор плюс `+`, застосований до одного операнда, нічого не зробить, якщо операнд є числом. Але якщо операнд не є числом, унарний плюс перетворить його на число.
Наприклад:
@@ -147,7 +147,7 @@ alert( +"" ); // 0
*/!*
```
-Він насправді працює як і `Number(...)`, але виглядає коротше.
+Він насправді працює як і `Number(...)`, але має коротший вигляд.
Необхідність перетворення рядків на числа виникає дуже часто. Наприклад, якщо ми отримуємо значення з полів HTML форми, вони зазвичай є рядками. Що робити, якщо ми хочемо їх підсумувати?
@@ -177,15 +177,15 @@ alert( +apples + +oranges ); // 5
З погляду математика надмірні плюси можуть здатися дивними. Але з погляду програміста тут немає нічого особливого: спочатку застосовуються унарні плюси, вони перетворюють рядки на числа, а потім бінарний плюс підсумовує їх.
-Чому унарні плюси застосовуються до значень перед бінарними плюсами? Як ми побачимо далі, це пов’язано з їх *вищим пріоритетом*.
+Чому унарні плюси застосовуються до значень перед бінарними плюсами? Як ми побачимо далі, це пов’язано з їхнім *вищим пріоритетом*.
## Пріоритет оператора
-Якщо вираз має більше одного оператора, порядок виконання визначається їх *пріоритетом*, або, іншими словами, типовим порядком першості операторів.
+Якщо вираз має більше одного оператора, порядок виконання визначається їхнім *пріоритетом*, або, іншими словами, типовим порядком першості операторів.
-Зі школи ми всі знаємо, що множення у виразі `1 + 2 * 2` повинно бути обчислене перед додаванням. Саме це і є пріоритетом. Кажуть, що множення має *вищий пріоритет*, ніж додавання.
+Зі школи ми всі знаємо, що множення у виразі `1 + 2 * 2` має бути обчислене перед додаванням. Саме це і є пріоритетом. Кажуть, що множення має *вищий пріоритет*, ніж додавання.
-Дужки перевизначають будь-який пріоритет, тому, якщо ми не задоволені типовим пріоритетом, ми можемо використовувати дужки, щоб змінити його. Наприклад: `(1 + 2) * 2`.
+Дужки перевизначають будь-який пріоритет, тому, якщо ми не задоволені типовим пріоритетом, ми можемо використовувати дужки, щоби змінити його. Наприклад: `(1 + 2) * 2`.
У JavaScript є багато операторів. Кожен оператор має відповідний номер пріоритету. Першим виконується той оператор, який має найбільший номер пріоритету. Якщо пріоритет є однаковим, порядок виконання — зліва направо.
@@ -223,7 +223,7 @@ alert( x ); // 5
Той факт, що `=` є оператором, а не "магічною" конструкцією мови, має цікаве значення.
-Всі оператори в JavaScript повертають значення. Це очевидно для `+` та `-`, але це також правдиво для `=`.
+Усі оператори в JavaScript повертають значення. Це очевидно для `+` та `-`, але це також правдиво для `=`.
Виклик `x = значення` записує `значення` у `x`, *а потім повертає його*.
@@ -243,9 +243,9 @@ alert( c ); // 0
У наведеному вище прикладі результат виразу `(a = b + 1)` є значенням, яке присвоювалося змінній `a` (тобто `3`). Потім воно використовується для подальших обчислень.
-Чудернацький код, чи не так? Ми повинні розуміти, як це працює, бо іноді ми бачимо подібне у бібліотеках JavaScript.
+Чудернацький код, чи не так? Ми маємо розуміти, як це працює, бо іноді ми бачимо подібне в бібліотеках JavaScript.
-Однак, будь ласка, не пишіть свій код таким чином. Такі трюки, безумовно, не роблять код більш зрозумілим або читабельним.
+Однак, будь ласка, не пишіть свій код так. Ці трюки, безумовно, не роблять код більш зрозумілим або читабельним.
### Ланцюгові присвоєння
@@ -265,7 +265,7 @@ alert( c ); // 4
Ланцюгове присвоєння виконується справа наліво. Спочатку обчислюється найправіший вираз `2 + 2`, а потім результат присвоюється змінним ліворуч: `c`, `b` та `a`. Зрештою всі змінні мають спільне значення.
-Знову таки, щоб покращити читабельність коду, краще розділяти подібні конструкції на декілька рядків:
+Знову таки, щоби покращити читабельність коду, краще розділяти подібні конструкції на декілька рядків:
```js
c = 2 + 2;
@@ -296,7 +296,7 @@ n *= 2; // тепер n = 14 (те ж саме, що n = n * 2)
alert( n ); // 14
```
-Короткі оператори "модифікувати та присвоїти" існують для всіх арифметичних та побітових операторів: `/=`, `-=` тощо.
+Короткі оператори "модифікувати та присвоїти" є для всіх арифметичних та побітових операторів: `/=`, `-=` тощо.
Ці оператори мають такий же пріоритет, як і звичайне присвоєння, тому вони виконуються після більшості інших обчислень:
@@ -314,7 +314,7 @@ alert( n ); // 16 (права частина обчислюється перш
Збільшення або зменшення на одиницю є однією з найпоширеніших числових операцій.
-Тому для цього існують спеціальні оператори:
+Тому для цього є спеціальні оператори:
- **Інкремент** `++` збільшує змінну на 1:
@@ -332,21 +332,21 @@ alert( n ); // 16 (права частина обчислюється перш
```
```warn
-Інкремент/декремент можуть застосовуватись лише до змінних. Спроба використати їх із значенням, як от `5++`, призведе до помилки.
+Інкремент/декремент можуть застосовуватися лише до змінних. Спроба використати їх із значенням, як от `5++`, призведе до помилки.
```
-Оператори `++` та `--` можуть розташовуватись до або після змінної.
+Оператори `++` та `--` можуть розташовуватися до або після змінної.
-- Коли оператор йде за змінною, він знаходиться у "постфіксній формі": `counter++`.
+- Коли оператор йде за змінною, він у "постфіксній формі": `counter++`.
- "Префіксна форма" – це коли оператор йде попереду змінної: `++counter`.
Обидві ці інструкції роблять те ж саме: збільшують `counter` на `1`.
-Чи є різниця? Так, але ми можемо побачити її тільки при використанні значення, яке повертають `++/--`.
+Чи є різниця? Так, але ми можемо побачити її тільки використавши значення, яке повертають `++/--`.
-Розберімось. Як нам відомо, усі оператори повертають значення. Інкремент/декремент не є винятком. Префіксна форма повертає нове значення, тоді як постфіксна форма повертає старе значення (до збільшення/зменшення).
+Розберімось. Як нам відомо, всі оператори повертають значення. Інкремент/декремент не є винятком. Префіксна форма повертає нове значення, тоді як постфіксна форма повертає старе значення (до збільшення/зменшення).
-Щоб побачити різницю, наведемо приклад:
+Щоби побачити різницю, наведемо приклад:
```js run
let counter = 1;
@@ -392,7 +392,7 @@ alert(a); // *!*1*/!*
```
````smart header="Інкремент/декремент серед інших операторів"
-Оператори `++/--` також можуть використовуватись всередині виразів. Їх пріоритет вищий за більшість інших арифметичних операцій.
+Оператори `++/--` також можуть використовуватися всередині виразів. Їхній пріоритет вищий за більшість інших арифметичних операцій.
Наприклад:
@@ -410,7 +410,7 @@ alert( 2 * counter++ ); // 2, тому що counter++ повертає "стар
Хоча з технічного погляду це допустимо, такий запис робить код менш читабельним. Коли один рядок робить кілька речей -- це не добре.
-При читанні коду швидке "вертикальне" сканування оком може легко пропустити щось подібне до `counter++`, і не буде очевидним, що змінна була збільшена.
+Під час читання коду швидке "вертикальне" сканування оком може легко пропустити щось подібне до `counter++`, і не буде очевидним, що змінна була збільшена.
Ми рекомендуємо стиль "одна лінія -- одна дія":
@@ -423,7 +423,7 @@ counter++;
## Побітові оператори
-Побітові оператори розглядають аргументи як 32-бітні цілі числа та працюють на рівні їх двійкового представлення.
+Побітові оператори розглядають аргументи як 32-бітні цілі числа та працюють на рівні їхнього двійкового представлення.
Ці оператори не є специфічними для JavaScript. Вони підтримуються у більшості мов програмування.
@@ -437,13 +437,13 @@ counter++;
- RIGHT SHIFT(зсув праворуч) ( `>>` )
- ZERO-FILL RIGHT SHIFT(зсув праворуч із заповненням нулями) ( `>>>` )
-Ці оператори використовуються тоді, коли нам потрібно "возитися" з числами на дуже низькому (побітовому) рівні (тобто — вкрай рідко). Найближчим часом такі оператори нам не знадобляться, оскільки у веброзробці вони майже не використовуються. Проте в таких областях, як криптографія, вони корисні. Ви можете прочитати [розділ про них](https://developer.mozilla.org/uk/docs/Web/JavaScript/Guide/Вирази_та_оператори#Бітові_оператори) на MDN, якщо виникне потреба.
+Ці оператори використовуються тоді, коли нам потрібно "возитися" з числами на дуже низькому (побітовому) рівні (тобто — вкрай рідко). Найближчим часом такі оператори нам не знадобляться, оскільки у веброзробці вони майже не використовуються. Проте в таких галузях, як криптографія, вони корисні. Ви можете прочитати [розділ про них](https://developer.mozilla.org/uk/docs/Web/JavaScript/Guide/Вирази_та_оператори#Бітові_оператори) на MDN, якщо виникне потреба.
## Кома
-Оператор "кома" (`,`) незвичайний і застосовується дуже рідко. Іноді цей оператор використовують для написання коротшого коду, тому нам потрібно знати його, щоб розуміти, що відбувається.
+Оператор "кома" (`,`) незвичайний і застосовується дуже рідко. Іноді цей оператор використовують для написання коротшого коду, тому нам потрібно знати його, щоби розуміти, що відбувається.
-Оператор кома дозволяє обчислити кілька виразів, розділивши їх комою `,`. Кожен з них обчислюється, але повертається тільки результат останнього.
+Оператор кома дає змогу обчислити кілька виразів, розділивши їх комою `,`. Кожен із них обчислюється, але повертається тільки результат останнього.
Наприклад:
@@ -465,7 +465,7 @@ alert( a ); // 7 (результат обчислення 3 + 4)
Чому нам потрібен оператор, що викидає все, окрім останнього виразу?
-Іноді його використовують в складніших конструкціях, щоб помістити кілька дій в один рядок.
+Іноді його використовують у складніших конструкціях, щоби помістити кілька дій в один рядок.
Наприклад:
@@ -476,4 +476,4 @@ for (*!*a = 1, b = 3, c = a * b*/!*; a < 10; a++) {
}
```
-Такі трюки використовуються в багатьох фреймворках JavaScript. Саме тому ми їх згадуємо. Але зазвичай вони не покращують читабельність коду, тому ми повинні добре подумати перед їх використанням.
+Такі трюки використовуються в багатьох фреймворках JavaScript. Саме тому ми їх згадуємо. Але зазвичай вони не покращують читабельність коду, тому ми маємо добре подумати перед їх використанням.