جلسه ۴ - عملگرها - ریاضی، مقایسه و منطق

بررسی پاسخ‌های بخش ۳:

**پاسخ ۱:

  • خط اول: "200" + "20" = "20020" وقتی با + دو رشته را جمع کنیم، آنها به هم وصل می‌شوند (concatenate)
  • خط دوم: 200 + 20 = 220

**پاسخ ۲:

  • Boolean("") = false (رشته خالی falsy است)
  • Boolean("0") = true (هر رشته غیرخالی truthy است)
  • Boolean(0) = false (عدد صفر falsy است)
  • Boolean([]) = true (آرایه خالی هم truthy است)

**پاسخ ۳:

  • toFixed() روی رشته کار نمی‌کند
  • parseInt(userAge).toFixed() + 5
  • نتیجه نهایی "25" + 5 = "255" می‌شود! چون toFixed() یک رشته برمی‌گرداند

راه حل بهتر:

let userAge = "25سال";
let ageAfter5Years = parseInt(userAge) + 5; // عدد 30
// یا اگر حتماً نیاز به toFixed داریم:
let ageAfter5Years = (parseInt(userAge) + 5).toFixed(); // رشته "30"

نکات مهمی که یاد گرفتیم:

  1. + با رشته‌ها: وقتی حداقل یکی از operandها رشته باشد، + عمل concatenation انجام می‌دهد
  2. تبدیل نوع: همیشه مراقب باشیم چه نوع داده‌ای داریم و چه متدهایی روی آن کار می‌کند
  3. truthy/falsy: آرایه خالی [] truthy است اما رشته خالی "" falsy است

حتماً! با کمال میل. بیا دقیقاً بر اساس متن اصلی که ارائه کردی پیش بریم.


بخش ۴: عملگرها - ریاضی، مقایسه و منطق (مطابق متن اصلی)

۱. عملگرهای حسابی (Arithmetic Operators)

برای انجام عملیات ریاضی استفاده می‌شوند:

عملگرتوضیحمثالنتیجه
+جمع5 + 611
-تفریق10 - 82
*ضرب5 * 420
/تقسیم20 / 54
%باقیمانده7 % 31
++افزایشlet a = 2; a++a = 3
--کاهشlet b = 5; b--b = 4

مثال از متن:

let x1 = 10, y1 = 4;
 
console.log(x1 + y1); // 14
console.log(x1 - y1); // 6
console.log(x1 * y1); // 40
console.log(x1 / y1); // 2.5
console.log(x1 % y1); // 2
 
let a = 5;
a++;
console.log(a); // 6
let b = 10;
b--;
console.log(b); // 9

۲. عملگرهای مقایسه‌ای (Comparison Operators)

دو مقدار را با هم مقایسه می‌کنند و true یا false برمی‌گردانند:

عملگرتوضیحمثالنتیجه
==برابر (با تبدیل نوع)5 == '5'true
===برابر دقیق (بدون تبدیل نوع)5 === '5'false
!=نامساوی (با تبدیل نوع)5 != '5'false
!==نامساوی دقیق (بدون تبدیل نوع)5 !== '5'true
>بزرگتر از10 > 5true
<کوچکتر از10 < 5false
>=بزرگتر یا مساوی10 >= 10true
<=کوچکتر یا مساوی10 <= 5false

مثال از متن:

let num1 = 10, num2 = 5, num3 = "10";
console.log(num1 == num3);  // true (مقادیر یکسان پس از تبدیل نوع)
console.log(num1 === num3); // false (نوع‌ها متفاوت است)
console.log(num1 > num2);   // true
console.log(num1 <= num2);  // false
console.log(num1 !== num3); // true (مقادیر یا نوع‌ها متفاوت است)

۳. عملگرهای منطقی (Logical Operators)

برای ترکیب چند شرط استفاده می‌شوند:

عملگرتوضیحمثالنتیجه
&&AND (هر دو باید true باشند)true && falsefalse
||OR (یکی باید true باشد)true || falsetrue
!NOT (برعکس می‌کند)!truefalse

مثال از متن:

let a = 10, b = 5, c = 15;
 
// AND منطقی
if (a > b && c > a) {
    console.log("هر دو شرط true هستند.");
} else {
    console.log("حداقل یکی از شرط‌ها false است.");
}
// خروجی: "هر دو شرط true هستند."
 
// OR منطقی
if (a < b || c > a) {
    console.log("حداقل یکی از شرط‌ها true است.");
}
// خروجی: "حداقل یکی از شرط‌ها true است."
 
// NOT منطقی
let isLoggedIn = false;
if (!isLoggedIn) {
    console.log("کارگر وارد سیستم نیست.");
}
// خروجی: "کارگر وارد سیستم نیست."

۴. اولویت عملگرها (Operator Precedence)

تعیین می‌کند کدام عملگر زودتر اجرا شود:

  • () بالاترین اولویت را دارد
  • * و / قبل از + و - اجرا می‌شوند
  • && قبل از || اجرا می‌شود

مثال از متن:

let result = 10 + 5 * 2; // ضرب اولویت دارد
console.log(result); // 20
 
let result2 = (10 + 5) * 2; // پرانتز اولویت دارد
console.log(result2); // 30

سؤالات تمرینی بخش ۴ (مطابق متن اصلی):

۱. خروجی کد زیر چیست؟

let num = 7;
console.log(num++ + ++num);

۲. کدام یک از عبارات زیر true برمی‌گرداند؟

5 == "5"     // اول
5 === "5"    // دوم  
"" == false  // سوم
0 == false   // چهارم

۳. با استفاده از عملگرهای منطقی، شرطی بنویس که بررسی کند:

  • یک عدد بین ۱۸ تا ۶۰ است (شامل خود ۱۸ و ۶۰ باشد)
  • یا اینکه عدد دقیقاً برابر ۱۶ باشد