diff --git a/1-js/02-first-steps/08-operators/1-increment-order/solution.md b/1-js/02-first-steps/08-operators/1-increment-order/solution.md index 2322644fe..fa7d79456 100644 --- a/1-js/02-first-steps/08-operators/1-increment-order/solution.md +++ b/1-js/02-first-steps/08-operators/1-increment-order/solution.md @@ -9,10 +9,10 @@ ```js run no-beautify let a = 1, b = 1; -alert( ++a ); // 2, پیشوند مقدار جدید را برمی‌گرداند -alert( b++ ); // 1, پسوند مقدار قدیمی را برمی‌گرداند +alert( ++a ); // 2 ،پیشوند مقدار جدید را برمی‌گرداند +alert( b++ ); // 1 ،پسوند مقدار قدیمی را برمی‌گرداند -alert( a ); // 2, یکی اضافه شد -alert( b ); // 2, یکی اضافه شد +alert( a ); // 2 ،یکی اضافه شد +alert( b ); // 2 ،یکی اضافه شد ``` diff --git a/1-js/02-first-steps/08-operators/3-primitive-conversions-questions/solution.md b/1-js/02-first-steps/08-operators/3-primitive-conversions-questions/solution.md index ba765f6e4..84e6c9723 100644 --- a/1-js/02-first-steps/08-operators/3-primitive-conversions-questions/solution.md +++ b/1-js/02-first-steps/08-operators/3-primitive-conversions-questions/solution.md @@ -15,9 +15,9 @@ null + 1 = 1 // (5) undefined + 1 = NaN // (6) " \t \n" - 2 = -2 // (7) ``` -1. علامت جمع همراه با string `"" + 1` عدد `1` را به string تبدیل می‌کند: `"" + 1 = "1"` ، و سپس داریم: `"1" + 0` که همین قاعده برای آن نیز برقرار خواهد بود. -2. علامت تفریق (مانند اکثر عملگرهای ریاضیاتی) فقط با اعداد کار می‌کند. این عملگر string خالی را به `0` تبدیل می‌کند. -3. علامت جمع به همراه string ، باعث تبدیل عدد `5` به string و سپس چسباندن آن بهم می‌شود. +1. علامت جمع همراه با رشته `"" + 1` عدد `1` را به رشته تبدیل می‌کند: `"" + 1 = "1"` ، و سپس داریم: `"1" + 0` که همین قاعده برای آن نیز برقرار خواهد بود. +2. علامت تفریق (مانند اکثر عملگرهای ریاضیاتی) فقط با اعداد کار می‌کند. این عملگر رشته خالی را به `0` تبدیل می‌کند. +3. علامت جمع به همراه رشته ، باعث تبدیل عدد `5` به رشته و سپس چسباندن آن بهم می‌شود. 4. علامت تفریق همیشه مقدار را به عدد تبدیل می‌کند. در نتیجه `" -9 "` را به عدد `–9` تبدیل می‌کند (فاصله‌های خالی را نیز حذف می‌کند). 5. `null` پس از تبدیل به عدد `0` خواهد بود. -6. `undefined` پس از تبدیل به عدد `NaN` خواهد بود. \ No newline at end of file +6. `undefined` پس از تبدیل به عدد `NaN` خواهد بود. diff --git a/1-js/02-first-steps/08-operators/4-fix-prompt/task.md b/1-js/02-first-steps/08-operators/4-fix-prompt/task.md index 1965fee69..fd683f888 100644 --- a/1-js/02-first-steps/08-operators/4-fix-prompt/task.md +++ b/1-js/02-first-steps/08-operators/4-fix-prompt/task.md @@ -11,8 +11,8 @@ importance: 5 چرا؟ آن را درست کنید. نتیجه باید `3` باشد. ```js run -let a = prompt("First number?", 1); -let b = prompt("Second number?", 2); +let a = prompt("عدد اول؟", 1); +let b = prompt("عدد دوم؟", 2); alert(a + b); // 12 ``` diff --git a/1-js/02-first-steps/08-operators/article.md b/1-js/02-first-steps/08-operators/article.md index ce71f1545..a118bd20f 100644 --- a/1-js/02-first-steps/08-operators/article.md +++ b/1-js/02-first-steps/08-operators/article.md @@ -1,10 +1,10 @@ -# عملگرها +# عملگرهای ساده، ریاضیات ما عملگرهای مختلفی را از زمان مدرسه به خاطر داریم. مانند جمع `+`، تفریق `-`، ضرب `*` و دیگر عملگرها. در این فصل، ما با عملگرهای ساده شروع می‌کنیم، سپس روی موضوعات مخصوص جاوااسکریپت تمرکز می‌کنیم که توسط دروس محاسباتی در مدرسه پوشش داده نشده‌اند. -## اصطلاحات: unary (یگانه) - binary (دوگانه) - operand (عملوند) +## اصطلاحات: یگانه (unary) - دوگانه (binary) - عملوند (operand) پیش از ادامه بیایید مفهوم این اصطلاحات را بفهمیم. @@ -19,14 +19,14 @@ */!* alert( x ); // -1، منفی کننده‌ی یگانه اعمال شد ``` - - یک عملگر زمانی binary است که دو عملوند داشته باشد. همان عملگر منفی کننده در شکل دوگانه هم وجود دارد: +- یک عملگر زمانی binary است که دو عملوند داشته باشد. همان عملگر منفی کننده در شکل دوگانه هم وجود دارد: ```js run no-beautify let x = 1, y = 3; alert( y - x ); // 2، عملگر دوگانه منفی که مقدارها را کم می‌کند ``` - در اصل در اینجا ما در مورد دو عملگر مجزا که نماد یکسانی دارند صحبت کردیم: اولی عملگر یگانه منفی کننده که علامت عدد را برعکس می‌کرد و دیگری عملگر دوگانه تفریق که یک عدد را از دیگری کم می‌کرد. + در اصل در مثال‌های بالا دو عملگر مجزا داریم که نماد یکسانی دارند: اولی عملگر یگانه منفی کننده که علامت عدد را برعکس می‌کرد و دیگری عملگر دوگانه تفریق که یک عدد را از دیگری کم می‌کرد. ## ریاضیات @@ -105,13 +105,13 @@ alert( 2 + '1' ); // "21" یک مثال پیچیده‌تر: ```js run -alert(2 + 2 + '1' ); // "41" and not "221" +alert(2 + 2 + '1' ); // "نتیجه "41" می‌شود نه "221 ``` اینجا، عملگرها یکی پس از دیگری کار می‌کنند. اولین `+` دو عدد را جمع می‌کند، پس `4` را برمی‌گرداند، سپس `+` دوم رشته‌ی `1` را به آن اضافه می‌کند، پس مثل این است که بنویسیم `'41' = '1' + 4`. ```js run -alert('1' + 2 + 2); // "122" and not "14" +alert('1' + 2 + 2); // "نتیجه "122" می‌شود نه "14 ``` اینجا، اولین عملوند یک string است، کامپایلر با دو عملوند دیگر هم مانند string رفتار می‌کند. `2` با `'1'` ادغام می‌شود، پس مانند این است که بنویسیم `"12" = 2 + '1'` و سپس `"122" = 2 + "12"`. @@ -157,7 +157,7 @@ alert( +"" ); // 0 let apples = "2"; let oranges = "3"; -alert( apples + oranges ); // "23", عملگر + دوگانه رشته‌ها را ادغام می‌کند +alert( apples + oranges ); // "23" ،عملگر + دوگانه رشته‌ها را ادغام می‌کند ``` اگر خواستیم با آنها مانند عدد برخورد کنیم، باید آنها را به عدد تبدیل کرده و سپس آنها را جمع می‌کنیم: @@ -290,8 +290,8 @@ n = n * 2; ```js run let n = 2; -n += 5; // now n = 7 (same as n = n + 5) -n *= 2; // now n = 14 (same as n = n * 2) +n += 5; // (یکسان است n = n + 5 با) است n = 7 حالا +n *= 2; // (یکسان است n = n * 2 با) است n = 14 حالا alert( n ); // 14 ``` @@ -305,7 +305,7 @@ let n = 2; n *= 3 + 5; -alert( n ); // 16 (right part evaluated first, same as n *= 8) +alert( n ); // 16 (یکسان است n *= 8، قسمت سمت راست اول ارزیابی می‌شود) ``` ## عملگر افزایش/کاهش @@ -320,14 +320,14 @@ alert( n ); // 16 (right part evaluated first, same as n *= 8) ```js run no-beautify let counter = 2; - counter++; // works the same as counter = counter + 1, but is shorter + counter++; // عمل می‌کند اما کوتاه‌تر است counter = counter + 1 درست مانند alert( counter ); // 3 ``` - **عملگر کاهش** `--` که یک واحد از عدد کم می‌کند: ```js run no-beautify let counter = 2; - counter--; // works the same as counter = counter - 1, but is shorter + counter--; // عمل می‌کند اما کوتاه‌تر است counter = counter - 1 درست مانند alert( counter ); // 1 ``` @@ -361,7 +361,7 @@ alert(a); // *!*2*/!* ```js run let counter = 1; -let a = counter++; // (*) changed ++counter to counter++ +let a = counter++; // (*) تغییر دادیم counter++ را به ++counter alert(a); // *!*1*/!* ``` @@ -376,7 +376,7 @@ alert(a); // *!*1*/!* let counter = 0; counter++; ++counter; - alert( counter ); // 2، خطوط بالا کار مشابهی انجام دادند + alert( counter ); // 2 ،خطوط بالا کار مشابهی انجام دادند ``` - اگر می‌خواهیم مقداری را افزایش داده *و* بلافاصله از نتیجه عملگر استفاده نماییم، باید از شکل پیشوندی استفاده کنیم: @@ -405,7 +405,7 @@ alert( 2 * ++counter ); // 4 ```js run let counter = 1; -alert( 2 * counter++ ); // 2, because counter++ returns the "old" value +alert( 2 * counter++ ); // 2 ،مقدار «قدیمی» را برمی‌گرداند counter++ چون ``` با اینکه از نظر فنی مشکلی ندارد ولی چنین روشی خوانایی کد را کاهش می‌دهد. اینکه یک خط کارهای مختلفی انجام می‌دهد مناسب نیست. @@ -452,7 +452,7 @@ counter++; let a = (1 + 2, 3 + 4); */!* -alert( a ); // 7 (the result of 3 + 4) +alert( a ); // 7 (3 + 4 نتیجه‌ی) ``` اولین عبارت `2 + 1` محاسبه می‌شود و جوابش دور ریخته می‌شود. سپس، `4 + 3` محاسبه می‌شود و به عنوان نتیجه بازگردانده می‌شود.