سلام دوستان! حالا که تونستیم با مهمترین عملگرهای جاوااسکریپت آشنا بشیم، می‌خوایم ببینیم کدوم عملگرها اولویت و تقدم بالاتری نسبت به بقیه عملگرها دارن. مثلاً اگه توی یک عبارت، هم عملگر ضرب وجود داشته باشه و هم عملگر جمع، می‌خوایم بدونیم جاوااسکریپت اول به کدوم عملگر می‌پردازه.

موارد زیر رو توی این قسمت یاد می‌گیریم:

 

تقدم عملگرها چیه؟ 🤔

کد زیر رو در نظر بگیرین:

5 + 2 * 3;

همه‌مون از زمان مدرسه 🏫 یادمون هست که توی عبارت بالا اول عمل ضرب باید انجام بگیره و بعد عمل جمع. توی زبان‌های برنامه‌نویسی هم این موضوع وجود داره. توی زبان‌های برنامه‌نویسی، هر عملگر یک اولویت و تقدم اجرا شدن مشخصی داره. اگه توی یک عبارت، بیشتر از یک عملگر وجود داشته باشه، عبارت براساس اولویت عملگرها اجرا میشه.

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

۱. عملگرهایی که فقط یک عملوند دارن مثل Increment و Unary Plus بالاترین تقدم رو دارن:

let x = 10;

5 + <<++x>>; // 5 + 11

۲. عملگر توان تقدم بالاتری نسبت به عملگر ضرب داره:

5 * <<2 ** 3>>; // 5 * 8 = 40

۳. ضرب و تقسیم که تقدم یکسانی دارن، تقدم بالاتری نسبت به جمع و تفریق دارن:

20 / 2 * 5; // 10 * 5 = 50

20 + <<2 * 5>>; // 20 + 10 = 30

۴. عملگرهای جمع و تفریق هم تقدم یکسانی دارن:

5 + 9 - 2; // 12

۵. عملگر Assignment یا = اولویت پایین‌تری نسبت به همه این عملگرها داره:

let x = <<5 + 2>>;
// x = 7

می‌تونین لیست کامل از مقدار تقدم اولویت‌ها رو از ببینین.

 

چطوری تقدم دلخواه خودمون رو اعمال کنیم؟

گاهی وقت‌ها شرایطی پیش میاد که نمی‌خوایم تقدم پیشفرض برای ما اعمال بشه. مثلاً توی کد زیر:

let result = 5 + 2 * 4;

alert(result); // 5 + 8 = 13

می‌خوایم ابتدا عمل جمع 5 + 2 انجام بشه و بعد نتیجه توی 4 ضرب بشه. برای این کار از یک عملگر جدید به اسم Grouping Operator استفاده می‌کنیم 👌

 

عملگر Grouping Operator

این عملگر به صورت پرانتزهای باز و بسته () هست و با اون می‌تونیم تقدم عملگرها رو کنترل کنیم. این عملگر بالاترین تقدم رو بین همه عملگرها داره و هر چیزی که توی پرانتزها بنویسیم، با بالاترین تقدم اجرا میشه:

let result = (5 + 2) * 4;

alert(result); // 7 * 4 = 28

 

خب دوستان، با تقدم عملگرها آشنا شدیم و دیدیم که هر عملگری اولویت خاصی تو اجرا شدن داره و یاد گرفتیم که چطوری می‌تونیم با عملگر Grouping تقدم دلخواه خودمون رو اعمال کنیم. روزتون خوش 😉✌️

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Grouping

https://javascript.info/operators#operator-precedence

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators