احتمالاً با خیلی از عملگرها از دوران مدرسه آشنا هستی، مثل جمع (+)، ضرب (*)، تفریق (-) و این جور چیزها. حالا تو این مقاله قراره علاوه بر آشنایی با عملگرهای ساده، یه سری نکات خاص جاوااسکریپتی رو یاد بگیریم که شاید توی ریاضی مدرسه بهشون اشاره نشده باشه.
قبل از اینکه بریم سراغ عملگرها، یه سری اصطلاح ساده ولی مهم رو باید بدونی:
عملگر یوناری (Unary Operator): وقتی یه عملگر فقط یه دونه عملوند داشته باشه، بهش می گیم "یوناری". مثلاً عملگر منفی (-) که علامت عدد رو برعکس می کنه.
let x = 1;
x = -x; // حالا x منفی شده
alert(x); // خروجی: -1let x = 1, y = 3;
alert(y - x); // خروجی: 2نکته جالب اینه که بعضی از عملگرها مثل علامت منفی (-) می تونن هم یوناری باشن و هم باینری. بسته به این که با یک عملوند کار کنن یا دوتا، رفتار متفاوتی دارن:
let a = 5;
let b = -a; // یوناری: علامت a رو برعکس می کنه
alert(b); // خروجی: -5
let c = 10, d = 4;
alert(c - d); // باینری: مقدار d رو از c کم می کنه
// خروجی: 6پس یاد گرفتیم که عملگرها بسته به تعداد عملوندی که باهاشون کار می کنن، می تونن "یوناری" یا "باینری" باشن. این مفهوم تو جاوااسکریپت خیلی مهمه و تو ادامه، بیشتر باهاش کار می کنیم. آماده ای که بریم سراغ نکات دیگه؟
جاوااسکریپت از چند عملیات ریاضی ساده و پرکاربرد پشتیبانی می کنه که احتمالاً با بیشترشون آشنا هستی:
چهار عمل اول که دیگه کاملاً مشخصه و نیاز به توضیح خاصی ندارن. اما بیایید یه کم درباره دو تا از این عملیات، یعنی باقیمانده و توان، بیشتر صحبت کنیم.
عملگر باقیمانده (%) برعکس چیزی که از اسمش ممکنه به نظر برسه، هیچ ربطی به درصد نداره! در واقع، نتیجه این عملگر باقی مونده تقسیم عدد اول بر عدد دومه.
مثال ها:
5 تقسیم بر 2: وقتی ۵ رو بر ۲ تقسیم کنیم، حاصل تقسیم ۲ هست، اما یه باقی مونده می مونه که برابر با ۱ هست.
alert(5 % 2); // خروجی: 18 تقسیم بر 3: حاصل تقسیم ۲ هست و باقی مونده ۲ می مونه.
alert(8 % 3); // خروجی: 28 تقسیم بر 4: اینجا چون ۸ کاملاً بر ۴ بخش پذیره، باقی مونده ۰ می شه.
alert(8 % 4); // خروجی: 0عملگر توان (**) عدد اول رو به توان عدد دوم می رسونه. همون چیزی که توی ریاضی بهش می گیم "توان" یا "به توان رسوندن".
مثال ها:
2 به توان 2: یعنی 2 * 2 که می شه ۴.
alert(2 ** 2); // خروجی: 42 به توان 3: یعنی 2 * 2 * 2 که می شه ۸.
alert(2 ** 3); // خروجی: 82 به توان 4: یعنی 2 * 2 * 2 * 2 که می شه ۱۶.
alert(2 ** 4); // خروجی: 16جاوااسکریپت فقط با توان های عدد صحیح کار نمی کنه. می تونی توان های اعشاری هم استفاده کنی، مثل ریشه گرفتن از اعداد.
مثال ها:
ریشه دوم عدد 4: یعنی به توان 1/2 برسونیم:
alert(4 ** (1 / 2)); // خروجی: 2ریشه سوم عدد 8: یعنی به توان 1/3 برسونیم:
alert(8 ** (1 / 3)); // خروجی: 2عملیات ریاضی توی جاوااسکریپت خیلی شبیه همون چیزیه که تو مدرسه یاد گرفتیم. فقط کافیه بدونی چطوری از عملگرها استفاده کنی و جاوااسکریپت بقیه کارها رو خودش انجام می ده.
جاوااسکریپت همیشه یه چیزای جالبی تو آستینش داره که فراتر از ریاضی مدرسه ایه! یکی از این چیزای جالب، رفتار خاص عملگر جمع + با رشته هاست.
معمولاً وقتی از عملگر جمع + استفاده می کنیم، انتظار داریم که عددها رو با هم جمع کنه. اما اگه یکی از مقادیر ما یه رشته (string) باشه، به جای جمع کردن، این عملگر رشته ها رو به هم می چسبونه. به این کار می گیم ترکیب رشته ها یا همون Concatenation.
مثال ساده:
let s = "my" + "string";
alert(s); // خروجی: mystringاینجا دوتا رشته "my" و "string" با هم ترکیب شدن و نتیجش شد "mystring".
حالا اگه یکی از عملوندها (اون چیزی که عملگر روش کار می کنه) رشته باشه، جاوااسکریپت به طور خودکار اون یکی رو هم به رشته تبدیل می کنه.
مثال:
alert('1' + 2); // خروجی: "12"
alert(2 + '1'); // خروجی: "21"مهم نیست اول عدد باشه یا رشته، وقتی یکی از عملوندها رشته باشه، خروجی یه رشته می شه.
عملگر + وقتی با رشته ها و عددها کار می کنه، به ترتیب اولویت عمل می کنه. این یعنی از چپ به راست عمل ها رو انجام می ده و بسته به نوع عملوندها، یا عددها رو جمع می کنه یا رشته ها رو ترکیب.
مثال:
alert(2 + 2 + '1'); // خروجی: "41"چرا؟
اول، 2 + 2 یه جمع ریاضی هست، پس می شه ۴. بعد، 4 + '1' یه ترکیب رشته ای می شه، یعنی خروجی می شه "41".
یه مثال دیگه:
alert('1' + 2 + 2); // خروجی: "122"چرا اینطوری شد؟
اینجا + از چپ شروع می کنه:
برخلاف + که با رشته ها رفتار خاصی داره، بقیه عملگرهای ریاضی مثل -، /، * همیشه با عددها کار می کنن و اگه عملوندی رشته باشه، سعی می کنن اون رو به عدد تبدیل کنن.
مثال ها:
alert(6 - '2'); // خروجی: 4 (رشته '2' به عدد تبدیل می شه)
alert('6' / '2'); // خروجی: 3 (هر دو رشته به عدد تبدیل می شن)نکته آخر: عملگر + تنها عملگریه که از رشته ها به این شکل پشتیبانی می کنه. برای بقیه عملگرها، جاوااسکریپت همیشه تلاش می کنه که همه چیز رو به عدد تبدیل کنه. پس موقع کار با این عملگرها حواست باشه که کد چه جوری رفتار می کنه و نوع داده هات چیه.
عملگر + توی جاوااسکریپت دو نقش متفاوت داره: یکی دوتایی (Binary) که قبلاً دیدیم (برای جمع عددها یا ترکیب رشته ها)، و یکی هم تک عملوندی (Unary) که قراره اینجا یاد بگیریم.
اگه + رو روی یه مقدار بذاریم و فقط یه عملوند داشته باشه (مثل +x)، این عملگر سعی می کنه مقدار رو به عدد تبدیل کنه.
اگه مقدار خودش عدد باشه، هیچ تغییری روش انجام نمی ده. یعنی همون مقدار برمی گرده.
let x = 1;
alert( +x ); // خروجی: 1
let y = -2;
alert( +y ); // خروجی: -2اما اگه مقدار عدد نباشه (مثلاً رشته، بولین یا هر چیز دیگه)، + اون رو به عدد تبدیل می کنه.
alert( +true ); // خروجی: 1 (true به عدد 1 تبدیل می شه)
alert( +"" ); // خروجی: 0 (رشته خالی به عدد 0 تبدیل می شه)این کار دقیقاً مثل تابع Number(...) عمل می کنه، ولی نوشتنش کوتاه تر و ساده تره.
چرا این کار مفیده؟
خیلی وقت ها توی پروژه ها، مقادیر عددی از ورودی های فرم ها یا جاهای دیگه به صورت رشته برمی گردن. حالا اگه بخوایم این مقادیر رو با هم جمع کنیم، باید اول به عدد تبدیلشون کنیم.
اگه مستقیماً از عملگر جمع دوتایی (+) استفاده کنیم، مقادیر به جای جمع شدن، ترکیب می شن:
let apples = "2";
let oranges = "3";
alert( apples + oranges ); // خروجی: "23" (رشته ها به هم چسبیدن)برای اینکه واقعاً جمع عددی انجام بشه، باید مقادیر رو اول به عدد تبدیل کنیم. اینجاست که + تک عملوندی به کار میاد:
let apples = "2";
let oranges = "3";
// هر دو مقدار به عدد تبدیل می شن و بعد جمع می شن
alert( +apples + +oranges ); // خروجی: 5روش طولانی تر:
این کار رو می شه با Number(...) هم انجام داد، ولی طولانی تر می شه:
alert( Number(apples) + Number(oranges) ); // خروجی: 5توی جاوااسکریپت، هر عملگر یه اولویت اجرا داره. عملگرهای تک عملوندی (مثل همین +) اول اجرا می شن و بعد نوبت عملگرهای دوتایی مثل جمع می رسه.
مثال:
let apples = "2";
let oranges = "3";
alert( +apples + +oranges ); نکته آخر: اگه با داده هایی سر و کار داری که ممکنه رشته باشن ولی قراره به صورت عددی استفاده بشن، + تک عملوندی یه ابزار سریع و تمیز برای تبدیل اون ها به عدد هست. پس برای راحتی کار، ازش استفاده کن و از نتایج شسته رفتش لذت ببر!
تو جاوااسکریپت، وقتی یه عبارت شامل چند تا عملگر باشه، ترتیب اجراشون رو یه چیزی به اسم اولویت عملگرها (Operator Precedence) مشخص می کنه. یعنی جاوااسکریپت تصمیم می گیره که کدوم عملگر اول اجرا بشه.
یه چیزایی از مدرسه یادت هست، درسته؟ مثلاً توی عبارت 1 + 2 * 2، اول ضرب انجام می شه و بعد جمع. چرا؟ چون ضرب نسبت به جمع اولویت بیشتری داره. همین ایده توی جاوااسکریپت هم هست.
پرانتز، رئیس همه!
اگه بخوای ترتیب پیش فرض رو تغییر بدی، فقط کافیه از پرانتز استفاده کنی. پرانتز همیشه اولویت رو تغییر می ده و کاری که داخلش نوشته شده رو اول اجرا می کنه.
alert( 1 + 2 * 2 ); // خروجی: 5 (اول ضرب، بعد جمع)
alert( (1 + 2) * 2 ); // خروجی: 6 (پرانتز باعث می شه جمع اول انجام بشه)توی جاوااسکریپت، هر عملگر یه عدد اولویت داره. عملگری که عدد اولویتش بیشتر باشه، زودتر اجرا می شه. اگه دو عملگر اولویت برابر داشته باشن، اجرا از چپ به راست انجام می شه.
(یادت باشه حفظ کردنشون لازم نیست! فقط برای آشناییه.)
| اولویت | اسم عملگر | علامت |
|---|---|---|
| 14 | مثبت تک عملوندی | + |
| 14 | منفی تک عملوندی | - |
| 13 | توان (Exponentiation) | ** |
| 12 | ضرب | * |
| 12 | تقسیم | / |
| 11 | جمع | + |
| 11 | تفریق | - |
| 2 | انتساب (Assignment) | = |
ببین، عملگرهایی مثل + و - وقتی به صورت تک عملوندی استفاده می شن، اولویت بالاتری دارن. این یعنی، اگه توی یه عبارت، هم عملگر تک عملوندی باشه هم دوتایی، جاوااسکریپت اول سراغ تک عملوندی می ره.
مثال:
let apples = "2";
let oranges = "3";
alert( +apples + +oranges ); // خروجی: 5اینجا +apples و +oranges (عملگر تک عملوندی) اول اجرا می شن و رشته ها رو به عدد تبدیل می کنن. بعدش عملگر جمع دوتایی (+) اعداد رو با هم جمع می کنه.
نکته مهم: پرانتز می تونه هرجایی لازم بود اولویت ها رو تغییر بده. پس اگه ترتیب پیش فرض با چیزی که می خوای جور نیست، از پرانتز استفاده کن و کنترل ترتیب رو دست خودت بگیر. به همین راحتی! 😎
alert( 1 + 2 ** 3 ); // خروجی: 9 (توان اول اجرا می شه)
alert( (1 + 2) ** 3 ); // خروجی: 27 (پرانتز باعث می شه جمع اول انجام بشه)حالا دیگه ترتیب عملگرها دستت اومده! 😊
خب، بیاید در مورد یه چیز ساده ولی جالب حرف بزنیم: عملگر انتساب یا همون = که همیشه بهش به چشم یه علامت نگاه می کردیم. این علامت یه چیز معمولی نیست، بلکه خودش یه عملگر محسوب می شه و داستانای جذابی پشتش داره.
عملگر = اولویت خیلی پایینی داره (عدد ۲ تو جدول اولویت ها). این یعنی وقتی توی یه عبارت می نویسی:
let x = 2 * 2 + 1;
alert(x); // خروجی: 5جاوااسکریپت اول عملیات ضرب (2 * 2) و جمع (+) رو انجام می ده و بعد نتیجه رو به x اختصاص می ده. به همین خاطر، ترتیب انجام کارا رو خود زبان هوشمندانه مدیریت می کنه.
نکته بامزه اینه که = فقط مقدار رو داخل متغیر نمی ریزه؛ بلکه خودش یه مقدار رو برمی گردونه. این یعنی x = value مقدار value رو هم برمی گردونه.
مثال:
let a = 1;
let b = 2;
let c = 3 - (a = b + 1);
alert(a); // خروجی: 3
alert(c); // خروجی: 0
اینجا چی شد؟
نکته مهم: این نوع کدها شاید تو بعضی جاها ببینیم، ولی نوشتنش زیاد توصیه نمی شه چون خوندنش برای دیگران سخت می شه.
یه ویژگی جالب دیگه تو جاوااسکریپت اینه که می تونی چندتا متغیر رو زنجیره ای مقداردهی کنی. مثلاً:
let a, b, c;
a = b = c = 2 + 2;
alert(a); // خروجی: 4
alert(b); // خروجی: 4
alert(c); // خروجی: 4
اینجا چی شد؟
خوندنی تر کردن کد
چنین زنجیره هایی ممکنه خوندن کد رو سخت کنه. برای همین بهتره این جور کدها رو به چند خط تقسیم کنی:
c = 2 + 2;
b = c;
a = c;این روش خوندن کد رو ساده تر و درک رو سریع تر می کنه.
عملگر = فقط یه علامت ساده نیست، بلکه یه عملگره که:
یادت باشه این قابلیت ها رو هوشمندانه استفاده کنی و کدت رو همیشه قابل فهم بنویسی!
خیلی وقتا لازم می شه یه عملیات ریاضی رو روی یه متغیر انجام بدیم و نتیجه رو دوباره تو همون متغیر ذخیره کنیم.
مثال:
let n = 2;
n = n + 5;
n = n * 2;حالا به جای اینکه این قدر طولانی بنویسیم، می تونیم از یه روش کوتاه تر با عملگرهای += یا *= استفاده کنیم:
let n = 2;
n += 5; // الان n می شه 7 (همون n = n + 5)
n *= 2; // الان n می شه 14 (همون n = n * 2)
alert(n); // 14این نوع عملگرهای کوتاه شده برای همه ی عملیات های ریاضی و بیتی وجود دارن، مثل /=, -= و... .
نکته: این عملگرها همون اولویت = رو دارن. یعنی اول قسمت راست محاسبه می شه، بعد نتیجه تو متغیر ذخیره می شه.
مثال:
let n = 2;
n *= 3 + 5; // اول 3 + 5 حساب می شه (8)، بعد n * 8
alert(n); // 16یکی از رایج ترین کارا توی ریاضی، زیاد یا کم کردن یه مقدار به اندازه ۱ هست. جاوااسکریپت برای این کار عملگرهای خاصی داره:
این عملگر یه مقدار به متغیر اضافه می کنه:
let counter = 2;
counter++; // مثل counter = counter + 1 ولی کوتاه تر
alert(counter); // 3این عملگر یه مقدار از متغیر کم می کنه:
let counter = 2;
counter--; // مثل counter = counter - 1 ولی کوتاه تر
alert(counter); // 1نکته مهم: این عملگرها فقط روی متغیرها کار می کنن. اگه بخوای ازشون روی مقادیر ثابت استفاده کنی (مثل 5++)، بهت خطا می ده.
این عملگرها می تونن قبل یا بعد از متغیر قرار بگیرن:
هر دوشون کارشون یکیه: متغیر رو یک واحد زیاد (یا کم) می کنن. اما فرقشون زمانی معلوم می شه که بخوای از مقدار برگشتی این عملگرها استفاده کنی.
فرق پیشوندی و پسوندی
همه ی عملگرها یه مقداری برمی گردونن. اینم استثنا نیست.
مثال:
let counter = 1;
let a = ++counter; // پیشوندی
alert(a); // 2اینجا چی شد؟
++counter مقدار counter رو زیاد کرد (۲) و مقدار جدید رو برگردوند. پس a شد ۲.
حالا بیایم از حالت پسوندی (counter++) استفاده کنیم:
let counter = 1;
let a = counter++; // (*) اینجا از counter++ استفاده شده
alert(a); // 1اینجا چی شد؟
counter++ مقدار counter رو زیاد کرد (۲)، ولی مقدار قبلی (۱) رو برگردوند. به همین خاطر alert مقدار ۱ رو نشون می ده.
خلاصه ای از فرق پیشوندی و پسوندی:
اگه نتیجه ی افزایش/کاهش استفاده نشه، هر دو یکسان عمل می کنن:
let counter = 0;
counter++;
++counter;
alert(counter); // 2، هر دو خط کار یکسانی کردناگه بخوایم بعد از افزایش مقدار، فوراً از نتیجه استفاده کنیم، از پیشوندی استفاده می کنیم:
let counter = 0;
alert(++counter); // 1اگه بخوایم مقدار رو افزایش بدیم ولی مقدار قبلی رو استفاده کنیم، از پسوندی استفاده می کنیم:
let counter = 0;
alert(counter++); // 0عملگرهای ++ و -- رو می تونیم توی عبارت ها هم استفاده کنیم. اولویت این عملگرها بالاتر از بیشتر عملگرهای ریاضی هست.
مثال:
let counter = 1;
alert(2 * ++counter); // 4++counter اول مقدار counter رو زیاد می کنه (۲)، بعد نتیجه ی جدید رو داخل ضرب استفاده می کنه.
پس 2 * 2 = 4.
حالا مقایسه کنیم با این حالت:
let counter = 1;
alert(2 * counter++); // 2اینجا counter++ مقدار قبلی (۱) رو برمی گردونه و بعد مقدار counter رو زیاد می کنه.
پس 2 * 1 = 2.
یک نکته مهم: از نظر فنی این نوع استفاده مشکلی نداره، ولی معمولاً کد رو ناخوانا می کنه. چرا؟ چون یه خط داره چندتا کار انجام می ده و ممکنه موقع خوندن کد، به راحتی از چیزی مثل counter++ غافل بشیم.
بهتره کد رو اینجوری بنویسیم که هر خط فقط یه کار انجام بده:
let counter = 1;
alert(2 * counter); // محاسبه و نمایش ضرب
counter++; // افزایش مقداراین سبک نوشتن کد رو قابل فهم تر می کنه و خوانایی رو بالا می بره. 😊
عملگرهای بیت به بیت (Bitwise) توی جاوااسکریپت با اعداد به صورت 32 بیتی کار می کنن و عملیاتشون رو روی نمایش باینری (دودویی) اون اعداد انجام می دن.
این عملگرها مخصوص جاوااسکریپت نیستن و توی بیشتر زبان های برنامه نویسی استفاده می شن.
لیست عملگرهای بیت به بیت:
این عملگرها خیلی کم استفاده می شن، مخصوصاً توی توسعه وب.
اما توی حوزه هایی مثل رمزنگاری (cryptography) و کارهای تخصصی تر، خیلی کاربرد دارن.
اگه زمانی نیاز داشتی، می تونی از مستندات MDN برای یادگیری عمیق تر کمک بگیری.
عملگر کاما (,) یکی از عجیب ترین و کم استفاده ترین عملگرهاست، ولی گاهی برای کوتاه تر کردن کد به کار می ره.
این عملگر اجازه می ده چندتا عبارت رو با کاما از هم جدا کنیم.
نکته: تمام عبارت ها اجرا می شن، ولی فقط نتیجه ی آخرین عبارت برگردونده می شه.
مثال:
let a = (1 + 2, 3 + 4);
alert(a); // 7 (نتیجه 3 + 4)اینجا چی شد؟
عملگر کاما اولویت خیلی پایینی داره، حتی پایین تر از عملگر =.
به همین خاطر، اگه از پرانتز استفاده نکنیم، نتیجه اشتباه می شه:
let a = 1 + 2, 3 + 4;این کد این جوری تفسیر می شه:
برای همین استفاده از پرانتز خیلی مهمه.
گاهی برای نوشتن چند عملیات توی یک خط از این عملگر استفاده می کنن.
مثال:
// سه عملیات توی یه خط
for (a = 1, b = 3, c = a * b; a < 10; a++) {
...
}خب، راستش این روش می تونه توی فریم ورک های جاوااسکریپت یا کدهای پیچیده دیده بشه.
اما معمولاً خوانایی کد رو کم می کنه. پس بهتره قبل از استفاده، حسابی فکر کنیم!

بعد از اجرای کد زیر، مقدار نهایی متغیرهای a، b، c و d چیه؟
let a = 1, b = 1;
let c = ++a; // ?
let d = b++; // ?let a = 1, b = 1;
alert( ++a ); // 2، حالت پیشوندی مقدار جدید رو برمی گردونه
alert( b++ ); // 1، حالت پسوندی مقدار قدیمی رو برمی گردونه
alert( a ); // 2، یک بار افزایش یافته
alert( b ); // 2، یک بار افزایش یافتهبعد از اجرای کد زیر، مقدار a و x چیه؟
let a = 2;
let x = 1 + (a *= 2);
let a = 2;
let x = 1 + (a *= 2); // a ضربدر 2 می شه، یعنی 4. بعد 1 + 4 محاسبه می شه.
alert(a); // 4
alert(x); // 5این مقاله یه خلاصه از عملگرهای جاوااسکریپت بود که بهمون کمک می کنه اگه خواستیم محاسبات ریاضی انجام بدیم، درست و سریع پیش بریم. تو این مقاله به چندتا نکته مهم اشاره شد:
اول از همه، عملگرها رو معرفی کردیم که شامل عملگرهای یوناری (مثل منفی که فقط یه عملوند می خواد) و باینری (مثل جمع یا تفریق که دو عملوند می خوان) می شه. بعدش فهمیدیم که بعضی عملگرها مثل علامت منفی می تونن هم یوناری باشن هم باینری، بستگی به این داره که چطور ازشون استفاده کنیم.
عملگرهای ریاضی هم که توی جاوااسکریپت زیاد استفاده می شن مثل جمع (+)، تفریق (-)، ضرب (*) و تقسیم (/) رو هم بررسی کردیم. دو تا عملگر باقیمانده (%) و توان (**) هم خیلی جالبن. باقیمانده می ره باقی مونده تقسیم رو نشون می ده و توان هم می ره یه عدد رو به توان عدد دیگه می رسونه. جالبه که می تونیم از توان های اعشاری هم استفاده کنیم، مثلاً ریشه دوم یا سوم یه عدد رو بگیریم.
همچنین، توی جاوااسکریپت عملگر جمع (+) وقتی با رشته ها برخورد می کنه، به جای جمع کردن اونا رو به هم می چسبونه. این یعنی می تونه به جای جمع، ترکیب رشته ها انجام بده. مثلاً اگر '1' + 2 رو بنویسیم، خروجی میشه "12" نه 3!
عملگر مثبت تک عملوندی (+) هم یه ویژگی جالب داره که می تونه چیزهایی رو که عدد نیستن (مثلاً رشته یا بولین) به عدد تبدیل کنه.
اگه بخوایم توی کدها مون مقادیر رو سریع تغییر بدیم، عملگرهایی مثل += یا *= به کمکمون میان. اینا به جای نوشتن کدهای طولانی تر، کار رو سریع تر می کنن.
در نهایت هم اومدیم و عملگرهای ++ و -- رو بررسی کردیم که برای افزایش یا کاهش مقدار متغیر استفاده می شن. فرق پیشوندی و پسوندی این دو هم گفته شد که ممکنه تاثیر متفاوتی روی کد بذاره.
امیدوارم این خلاصه بهت کمک کرده باشه تا با عملگرهای جاوااسکریپت راحت تر کار کنی!