JavaScript'da arifmetik, solishtirish, mantiqiy, ternary va zamonaviy (??, ?.) operatorlar, type coercion hamda amaliy mashq va testlar.
Operator — ikkita yoki undan ortiq qiymat ustida amal bajarish uchun ishlatiladigan belgi. Bu bobda barcha asosiy operator turlarini o'rganamiz.
Sonlar ustida matematik amal bajarish uchun ishlatiladi.
| Operator | Ma'nosi | Misol | Natija |
|---|---|---|---|
+ | Qo'shish | 5 + 2 | 7 |
- | Ayirish | 5 - 2 | 3 |
* | Ko'paytirish | 5 * 2 | 10 |
/ | Bo'lish | 5 / 2 | 2.5 |
% | Qoldiq (modulo) | 5 % 2 | 1 |
** | Daraja | 5 ** 2 | 25 |
script.jsJavaScriptlet a = 10;let b = 3;console.log(a + b); // 13console.log(a % b); // 1console.log(a ** b); // 1000
% operatori bo'lishdan qolgan qoldiqni qaytaradi — bu juft/toq sonni tekshirishda ko'p ishlatiladi.
💡 Key Idea
a % 2 === 0 — son juft ekanini tekshirish usuli.
Variable'ga qiymat berish yoki mavjud qiymatni o'zgartirish uchun ishlatiladi.
| Operator | Misol | Ekvivalenti |
|---|---|---|
= | a = 5 | — |
+= | a += 5 | a = a + 5 |
-= | a -= 5 | a = a - 5 |
*= | a *= 5 | a = a * 5 |
/= | a /= 5 | a = a / 5 |
script.jsJavaScriptlet score = 10;score += 5;console.log(score); // 15
Ikki qiymatni solishtirish uchun ishlatiladi, natija har doim true yoki false.
| Operator | Ma'nosi | Misol | Natija |
|---|---|---|---|
== | Teng (type'ni tekshirmaydi) | 5 == "5" | true |
=== | Qat'iy teng (type'ni ham tekshiradi) | 5 === "5" | false |
!= | Teng emas | 5 != "5" | false |
!== | Qat'iy teng emas | 5 !== "5" | true |
> | Katta | 5 > 3 | true |
< | Kichik | 5 < 3 | false |
>= | Katta yoki teng | 5 >= 5 | true |
<= | Kichik yoki teng | 5 <= 4 | false |
script.jsJavaScriptconsole.log(5 == "5"); // trueconsole.log(5 === "5"); // false
== faqat qiymatni solishtiradi, === esa ham qiymat, ham data type'ni solishtiradi.
⚠️ Common Mistake
== ishlatish ko'pincha kutilmagan natijalarga olib keladi. Har doim === ishlatish tavsiya etiladi.
✅ Correct: if (age === 18)
❌ Wrong: if (age == 18)
Bir nechta shartni birlashtirish uchun ishlatiladi.
| Operator | Ma'nosi | Misol |
|---|---|---|
&& | VA (ikkalasi ham true bo'lsa) | true && false → false |
|| | YOKI (bittasi true bo'lsa) | true || false → true |
! | Inkor (aksini qaytaradi) | !true → false |
script.jsJavaScriptlet age = 20;let hasID = true;if (age >= 18 && hasID) {console.log("Kirish mumkin");}
&& operatori ikkala shart ham true bo'lsagina blok ichidagi kodni ishga tushiradi.
if...elsening qisqartirilgan shakli — bitta qatorda shart tekshirish.
script.jsJavaScriptlet age = 20;let status = age >= 18 ? "Katta" : "Kichik";console.log(status); // "Katta"
age >= 18 — shart tekshiriladi.true bo'lsa — "Katta" qaytariladi.false bo'lsa — "Kichik" qaytariladi.🔗 Connection
Ternary operator — bu Chapter 4'da o'rganiladigan if...elsening muqobil, qisqa shakli.
?? — chap tomondagi qiymat null yoki undefined bo'lsa, o'ng tomondagi qiymatni qaytaradi.?. — object ichidagi property mavjud bo'lmasa, xatolik bermasdan undefined qaytaradi.script.jsJavaScriptlet username = null;console.log(username ?? "Mehmon"); // "Mehmon"let user = {};console.log(user.profile?.name); // undefined (xatolik yo'q)
🔥 Important
Bu operatorlar zamonaviy JavaScript'da (ES2020+) juda ko'p ishlatiladi va kodni xavfsizroq qiladi.
Task:
Ikkita son (a va b) yarating va ularning yig'indisi, ayirmasi, ko'paytmasini konsolga chiqaring.
Required Concepts:
Hint:
+, -, * operatorlaridan foydalaning.
Task:
Foydalanuvchi yoshini tekshiruvchi kod yozing: agar yosh 18 dan katta yoki teng bo'lsa "Kattalar", aks holda "Bolalar" chiqsin. Buni ternary operator bilan yozing.
Required Concepts:
Hint:
shart ? "ha" : "yo'q" formatidan foydalaning.
Task:
Quyidagi to'rtta ifodaning natijasini oldindan ayting va sababini tushuntiring:
script.jsJavaScriptconsole.log(0 == false);console.log(0 === false);console.log(null == undefined);console.log(null === undefined);
Required Concepts:
== vs ===Hint:
== ba'zida avtomatik type conversion qiladi.
script.jsJavaScriptlet x = "5";let y = 5;console.log(x == y);console.log(x === y);
🧠 Think first! Javobni ko'rishdan oldin kamida 30 soniya o'ylang.
<details> <summary>Answer</summary> true falseWhy?
== operatori qiymatni solishtirishdan oldin type'larni avtomatik moslashtiradi (type coercion), shuning uchun "5" == 5 → true. Lekin === type'ni ham solishtiradi, shuning uchun "5" === 5 → false.
Quyidagi kodda muammo bor:
script.jsJavaScriptlet price = 100;let discount = "10";let finalPrice = price - discount;console.log(finalPrice + " so'm chegirma");
Your Task:
Yaxshilangan versiya (aniqlik uchun):
</details>script.jsJavaScriptlet price = 100;let discount = Number("10");let finalPrice = price - discount;console.log(finalPrice + " so'm chegirma");
=== tavsiya etiladi.if...else.?? va ?. — zamonaviy, xavfsiz operatorlar.=== va !== ishlating, == va != emas.% operatori juft/toq sonlarni tekshirishda foydali.if afzal.?? faqat null/undefined uchun ishlaydi, 0 yoki "" uchun emas.?. object ichidagi mavjud bo'lmagan property'da xatolikni oldini oladi.script.jsJavaScripta + b // qo'shisha % b // qoldiqa === b // qat'iy tenga && b // VAa || b // YOKI!a // inkora ? b : c // ternarya ?? b // nullish coalescinga?.b // optional chaining
Mavzu bo‘yicha tushunchalaringizni interaktiv test orqali sinovdan o‘tkazing va natijalarni bilib oling.
Darslikda o‘rganilgan qoidalarga asosan real kod yozing, testlardan o‘tkazing va yechimlarni mustahkamlang.
Test Sinovi
Hali topshirilmagan (kamida 75% kerak)
Amaliy Masalalar
0 / 3 ta yechildi (kamida 75% kerak)
Dars sifati va mazmunini yaxshilash uchun o‘z haqqoniy bahoingizni qoldiring.
Mavzuni to‘liq o‘zlashtirish uchun test sinovi, amaliy kodlash va bog‘liq darslar
O‘z bilimingizni interaktiv test savollari orqali tekshiring va darhol xatolarni tahlil qiling.
Nazariyani real kod yozish bilan mustahkamlang, avtomatik testlardan o‘ting va XP to‘plang.
Kurs bo‘yicha keyingi va bog‘liq mavzular: