diff --git a/1-js/02-first-steps/09-comparison/1-comparison-questions/solution.md b/1-js/02-first-steps/09-comparison/1-comparison-questions/solution.md
index 0f323c1ff..4d7084e32 100644
--- a/1-js/02-first-steps/09-comparison/1-comparison-questions/solution.md
+++ b/1-js/02-first-steps/09-comparison/1-comparison-questions/solution.md
@@ -12,10 +12,10 @@ null === +"\n0\n" → false
Ось чому такі результати:
-1. Очевидно, 5 більше за 4. true.
+1. Очевидно, 5 більше за 4. `true`.
2. Посимвольне порівняння, тому `false`. `"а"` менше за `"я"`.
3. Знову посимвольне порівняння. Перший символ рядка `"2"` більший за перший символ другого рядка — `"1"`.
-4. Спеціальний випадок. Значення `null` і `undefined` рівні під час не строгого порівняння.
+4. Спеціальний випадок. Значення `null` і `undefined` рівні лише один одному під час нестрогого порівняння.
5. Строге порівняння різних типів, тому `false`.
-6. Аналогічно, як в кроці `(4)`, `null` рівне лише `undefined`.
+6. Аналогічно, як в кроці `(4)`, `null` дорівнює лише `undefined`.
7. Строге порівняння різних типів.
diff --git a/1-js/02-first-steps/09-comparison/1-comparison-questions/task.md b/1-js/02-first-steps/09-comparison/1-comparison-questions/task.md
index 2c9637c67..b5204e74c 100644
--- a/1-js/02-first-steps/09-comparison/1-comparison-questions/task.md
+++ b/1-js/02-first-steps/09-comparison/1-comparison-questions/task.md
@@ -4,7 +4,7 @@ importance: 5
# Оператори порівняння
-Який буде результат порівняння цих виразів?
+Який буде результат цих виразів?
```js no-beautify
5 > 4
diff --git a/1-js/02-first-steps/09-comparison/article.md b/1-js/02-first-steps/09-comparison/article.md
index fc4e634ee..0d48d50d8 100644
--- a/1-js/02-first-steps/09-comparison/article.md
+++ b/1-js/02-first-steps/09-comparison/article.md
@@ -1,24 +1,24 @@
# Оператори порівняння
-Багато з операторів порівняння нам відомі з математики:
+Багато з операторів порівняння нам відомі з математики.
В JavaScript вони записуються ось так:
- Більше/менше: a > b
, a < b
.
-- Більше/менше або рівне: a >= b
, a <= b
.
-- Рівне: `a == b`, зверніть увагу, для порівняння потрібно використовувати два знаки рівності `==`. Один знак рівності `a = b` означало б присвоєння.
-- Не рівне. В математиці позначається символом ≠
, проте в JavaScript записується як a != b
.
+- Більше/менше або дорівнює: a >= b
, a <= b
.
+- Дорівнює: `a == b`. Зверніть увагу, для порівняння потрібно використовувати два знаки рівності `==`. Один знак рівності `a = b` означав б присвоєння.
+- Не дорівнює. В математиці позначається символом ≠
, проте в JavaScript записується як a != b
.
-В цьому розділі ми вивчимо про різні типи порівнянь, як JavaScript їх виконує та розглянемо важливі особливості.
+В цьому розділі ми вивчимо різні типи порівнянь, узнаємо, як JavaScript їх виконує, та розглянемо важливі особливості.
-В кінці ви знайдете корисні поради, як уникати специфічні "примхи JavaScript".
+В кінці ви знайдете корисні поради, як уникати специфічних "примх" JavaScript.
## Результат порівняння має логічний тип
Всі оператори порівняння повертають значення логічного типу:
-- `true` -- означає "так", "правильно" або "правда".
-- `false` -- означає "ні", "неправильно" або "не правда".
+- `true` -- означає "так", "правильно" або "істина".
+- `false` -- означає "ні", "неправильно" або "хибність".
Наприклад:
@@ -39,14 +39,14 @@ alert( result ); // true
Щоб визначити, чи один рядок більший за інший, JavaScript використовує так званий "алфавітний" або "лексикографічний" порядок.
-Іншими словами, рядки порівнюються посимвольно.
+Інакше кажучи, рядки порівнюються посимвольно.
Наприклад:
```js run
alert( 'Я' > 'А' ); // true
-alert( 'Кіт' > 'Код' ); // true
-alert( 'Кома' > 'Комар' ); // false
+alert( 'Соки' > 'Сода' ); // true
+alert( 'Комар' > 'Кома' ); // true
```
Алгоритм порівняння рядків досить простий:
@@ -57,16 +57,16 @@ alert( 'Кома' > 'Комар' ); // false
4. Порівняння продовжується до того часу, доки не закінчиться один з рядків.
5. Якщо два рядки закінчуються одночасно, то вони рівні. Інакше, довший рядок вважатиметься більшим.
-В прикладах вище, порівняння `'Я' > 'А'` завершиться на першому кроці, тоді як `"Кіт"` і `"Код"` будуть порівнюватися посимвольно:
+В прикладах вище, порівняння `'Я' > 'А'` завершиться на першому кроці, тоді як `'Соки'` і `'Сода'` будуть порівнюватися посимвольно:
-1. `К` рівне `К`.
-2. `і` більше за `о`.
-3. На другому кроці порівнювання закінчується. Перший рядок більший.
+1. `С` дорівнює `С`.
+2. `о` дорівнює `о`.
+3. `к` більше ніж `д`. На цьому кроці порівнювання закінчується. Перший рядок більший.
```smart header="Використовується кодування Unicode, а не справжній алфавіт"
Такий алгоритм порівняння схожий на алгоритм сортування, який використовується в словниках і телефонних довідниках, проте вони не зовсім однакові.
-Наприклад, в JavaScript має значення регістр символів. Велика буква `"А"` не рівна маленькій `"а"`. Але яка з них більше? Маленька буква `"а"`. Чому? Тому що маленькі букви мають більший код у внутрішній таблиці кодування, яку використовує JavaScript (Unicode). Ми розглянемо це детальніше в розділі .
+Наприклад, в JavaScript має значення регістр символів. Велика буква `"А"` не рівна маленькій `"а"`. Але яка з них більше? Маленька буква `"а"`. Чому? Тому що маленькі букви мають більший код у внутрішній таблиці кодування, яку використовує JavaScript (Unicode). Ми розглянемо особливості і наслідки цього кодування в розділі .
```
## Порівняння різних типів
@@ -107,7 +107,7 @@ alert( Boolean(b) ); // true
alert(a == b); // true!
```
-З точки зору JavaScript, результат очікуваний. Порівняння перетворює значення на числа (тому `"0"` стає `0`), тоді як явне перетворення `Boolean` використовує інший набір правил.
+З погляду JavaScript, результат очікуваний. Порівняння перетворює значення на числа (тому `"0"` стає `0`), тоді як явне перетворення за допомогою `Boolean` використовує інший набір правил.
````
## Строге порівняння
@@ -146,14 +146,14 @@ alert( 0 === false ); // false, тому що порівнюються різн
Поведінка `null` і `undefined` під час порівняння з іншими значеннями — особливе:
-Під час строгого порівняння `===`
+При строгому порівнянні `===`
: Ці значення різні, тому що різні їхні типи.
```js run
alert( null === undefined ); // false
```
-При не строгому порівнянні `==`
+При нестрогому порівнянні `==`
: Ці значення рівні. Водночас ці значення не рівні значенням інших типів. Це спеціальне правило мови.
```js run
@@ -175,15 +175,15 @@ alert( null == 0 ); // (2) false
alert( null >= 0 ); // (3) *!*true*/!*
```
-З точки зору математики це дивно. Результат останнього порівняння показує, що "`null` більше або рівне нуля", в такому випадку, результат одного з порівнянь вище повинен бути `true`, але обидва вони `false`.
+З погляду математики це дивно. Результат останнього порівняння показує, що "`null` більше або дорівнює нулю", в такому випадку результат одного з порівнянь вище повинен бути `true`, але вони обидва `false`.
-Причина в тому що не строге порівняння `==` і порівняння `> < >= <=` працюють по-різному. Останні оператори конвертують `null` в число, розглядаючи його як `0`. Ось чому вираз (3) `null >= 0` дає `true`, а вираз (1) `null > 0` — `false`.
+Причина в тому що нестроге порівняння `==` і порівняння `> < >= <=` працюють по-різному. Останні оператори конвертують `null` в число, розглядаючи його як `0`. Ось чому вираз (3) `null >= 0` дає `true`, а вираз (1) `null > 0` — `false`.
-З іншого боку, для не строгого порівняння `==` значень `undefined` і `null` діє окреме правило: ці значення не перетворюються на інші типи, вони рівні один одному і не рівні будь-чому іншому. Ось чому вираз (2) `null == 0` повертає результат `false`.
+З іншого боку, для нестрогого порівняння `==` значень `undefined` і `null` діє окреме правило: ці значення не перетворюються на інші типи, вони рівні один одному і не рівні будь-чому іншому. Ось чому вираз (2) `null == 0` повертає результат `false`.
-### Непорівнюване значення undefined
+### Не порівнюйте значення undefined
-Значення `undefined` не рівне іншим значенням:
+Значення `undefined` не має порівнюватись з іншими значеннями:
```js run
alert( undefined > 0 ); // false (1)
@@ -196,14 +196,14 @@ alert( undefined == 0 ); // false (3)
Ми отримуємо такі результати, тому що:
- Порівняння `(1)` і `(2)` повертає `false`, тому що `undefined` під час порівняння з "не null" значеннями завжди конвертується в `NaN`, а `NaN` — це спеціальне числове значення, яке завжди повертає `false` під час будь-яких порівнянь.
-- Не строге порівняння `(3)` повертає `false`, тому що `undefined` рівне тільки `null` і ніяким іншим значенням.
+- Нестроге порівняння `(3)` повертає `false`, тому що `undefined` рівне тільки `null`, `undefined` і жодним іншим значенням.
-### Уникайте проблем
+### Як уникати проблем
-Чому ми переглядали ці приклади? Чи повинні ми постійно пам'ятати про всі ці особливості? Не обов'язково. З часом, всі ці заплутані правила стануть для вас знайомими, але можна уникнути проблем, якщо дотримуватися простих правил:
+Чому ми переглядали ці приклади? Чи повинні ми постійно пам'ятати про всі ці особливості? Не обов'язково. З часом всі ці заплутані правила стануть для вас знайомими, але можна уникнути проблем, якщо дотримуватися надійних правил:
- Будьте пильні під час порівняння будь-якого значення з `undefined/null`, за винятком строгого порівняння `===`.
-- Не використовуйте порівняння `>= > < <=` зі змінними, які можуть приймати значення `null/undefined`, якщо не впевнені в тому, що робите. Якщо змінна може приймати ці значення, то додайте для них окремі перевірки.
+- Не використовуйте порівняння `>= > < <=` зі змінними, які можуть приймати значення `null/undefined`, хіба що ви цілком впевнені в тому, що робите. Якщо змінна може приймати ці значення, то додайте для них окремі перевірки.
## Підсумки
@@ -211,4 +211,4 @@ alert( undefined == 0 ); // false (3)
- Рядки порівнюються посимвольно в лексикографічному порядку.
- Значення різних типів під час порівняння конвертуються в числа. Винятками є порівняння за допомогою операторів строгої рівності/нерівності.
- Значення `null` і `undefined` рівні `==` один одному і не рівні будь-якому іншому значенню.
-- Будьте обережні під час використання операторів порівняння `>` чи `<` зі змінними, які можуть приймати значення `null/undefined`. Хорошою ідеєю буде зробити окрему перевірку на `null/undefined` для таких значень.
+- Будьте обережні, використовуючи оператори порівняння на зразок `>` чи `<` зі змінними, які можуть приймати значення `null/undefined`. Хорошою ідеєю буде зробити окрему перевірку на `null/undefined` для таких значень.