# JavaScript operatorlar (arifmetik, taqqoslash, mantiqiy)

> JavaScript operatorlari: arifmetik amallar, === va == farqi, mantiqiy AND, OR, NOT hamda qisqartirilgan yozuvlar. Har birini amalda sinab ko'ring.

Manba: https://learncode.uz/javascript/operatorlar/
Sana: 2026-05-26

**Operator** — qiymatlar ustida amal bajaradigan belgi. Qo'shish, taqqoslash,
mantiqiy tekshiruv — barchasi operator orqali yoziladi.

## Arifmetik operatorlar

```js
console.log(10 + 3);
console.log(10 - 3);
console.log(10 * 3);
console.log(10 / 3);
console.log(10 % 3);
console.log(10 ** 3);
```

- `%` — bo'lishdan qolgan qoldiq;
- `**` — darajaga ko'tarish.

## Qisqartirilgan yozuv

O'zgaruvchining o'z qiymatini yangilash ko'p uchraydi:

```js
let account = 10;

account += 5;
console.log(account);

account -= 3;
console.log(account);

account++;
console.log(account);
```

`hisob += 5` — bu `hisob = hisob + 5` ning qisqasi. `++` esa bittaga
oshiradi; sikllarda tez-tez uchraydi.

## Taqqoslash operatorlari

Natijasi doim `true` yoki `false` bo'ladi:

```js
console.log(10 > 5);
console.log(10 >= 10);
console.log(3 < 2);
console.log(5 === 5);
console.log(5 !== 3);
```

## === va == farqi

Bu JavaScript'dagi eng muhim nozikliklardan biri:

```js
console.log(5 === "5");
console.log(5 == "5");

console.log(0 === false);
console.log(0 == false);
```

- `===` — **qat'iy tenglik**: qiymat ham, tur ham bir xil bo'lishi kerak;
- `==` — qiymatni avval o'giradi, keyin taqqoslaydi.

Tur nima ekani [ma'lumot turlari](https://learncode.uz/javascript/malumot-turlari) darsida
ko'rilgan edi — `===` aynan shu turni ham tekshiradi.

> **Doim === ishlating**
>
> `==` kutilmagan natija beradi: `"" == 0` rost, `null == undefined` rost,
> `"0" == false` rost. Bu xatolar topilishi qiyin. Zamonaviy kodda **faqat
> `===`** va `!==` ishlatiladi.

## Mantiqiy operatorlar

Bir nechta shartni birlashtirish uchun:

```js
const age = 20;
const student = true;

console.log(age >= 18 && student);
console.log(age < 18 || student);
console.log(!student);
```

- `&&` (VA) — **ikkala** shart rost bo'lsa rost;
- `||` (YOKI) — **kamida bittasi** rost bo'lsa rost;
- `!` (EMAS) — qiymatni teskarisiga aylantiradi.

> **Atama**
>
> **Truthy va falsy** — JavaScript har qiymatni mantiqiy kontekstda rost yoki
> yolg'on deb baholaydi. Falsy qiymatlar: `false`, `0`, `""` (bo'sh matn),
> `null`, `undefined`, `NaN`. Qolgan hamma narsa truthy.

```js
if ("") console.log("bo'sh matn — truthy");
else console.log("bo'sh matn — falsy");

if ("salom") console.log("matn — truthy");
if (0) console.log("nol — truthy");
else console.log("nol — falsy");
```

## Amallar tartibi

Matematikadagidek: avval `*` va `/`, keyin `+` va `-`. Qavs tartibni
o'zgartiradi:

```js
console.log(2 + 3 * 4);
console.log((2 + 3) * 4);
```

Aniqlik uchun qavsni ayamang — kod o'qishga qulay bo'ladi.

## Amaliy mashq

Operatorlarni sinang:

1. Narx va donadan jami summani hisoblang, so'ng 12% soliq qo'shing;
2. `%` bilan sonning juftligini tekshiring: `son % 2 === 0`;
3. `5 === "5"` va `5 == "5"` natijalarini solishtiring;
4. `&&` bilan ikki shartni birlashtiring: yosh 18 dan katta VA shahar "Toshkent";
5. `!` bilan shartni teskari qiling.

3-qadam nima uchun `===` afzalligini ko'rsatadi.

## Qisqacha xulosa

- Arifmetik: `+`, `-`, `*`, `/`, `%` (qoldiq), `**` (daraja).
- Qisqartirilgan: `+=`, `-=`, `++`, `--`.
- Taqqoslash natijasi — `true` yoki `false`.
- **`===` qat'iy tenglik** (tur ham tekshiriladi); `==` dan qoching.
- Mantiqiy: `&&` (va), `||` (yoki), `!` (emas).

Keyingi darsda [shart operatorlari](https://learncode.uz/javascript/shart-operatorlari) — kodni
shartga qarab tarmoqlashni ko'ramiz.
