Skip to content

Update "Basic operators, maths" #144

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Sep 2, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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 ،یکی اضافه شد
```

Original file line number Diff line number Diff line change
Expand Up @@ -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` خواهد بود.
6. `undefined` پس از تبدیل به عدد `NaN` خواهد بود.
4 changes: 2 additions & 2 deletions 1-js/02-first-steps/08-operators/4-fix-prompt/task.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
```
32 changes: 16 additions & 16 deletions 1-js/02-first-steps/08-operators/article.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# عملگرها
# عملگرهای ساده، ریاضیات

ما عملگرهای مختلفی را از زمان مدرسه به خاطر داریم. مانند جمع `+`، تفریق `-`، ضرب `*` و دیگر عملگرها.

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

## اصطلاحات: unary (یگانه) - binary (دوگانه) - operand (عملوند)
## اصطلاحات: یگانه (unary) - دوگانه (binary) - عملوند (operand)

پیش از ادامه بیایید مفهوم این اصطلاحات را بفهمیم.

Expand All @@ -19,14 +19,14 @@
*/!*
alert( x ); // -1، منفی کننده‌ی یگانه اعمال شد
```
- یک عملگر زمانی binary است که دو عملوند داشته باشد. همان عملگر منفی کننده در شکل دوگانه هم وجود دارد:
- یک عملگر زمانی binary است که دو عملوند داشته باشد. همان عملگر منفی کننده در شکل دوگانه هم وجود دارد:

```js run no-beautify
let x = 1, y = 3;
alert( y - x ); // 2، عملگر دوگانه منفی که مقدارها را کم می‌کند
```

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

## ریاضیات

Expand Down Expand Up @@ -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"`.

Expand Down Expand Up @@ -157,7 +157,7 @@ alert( +"" ); // 0
let apples = "2";
let oranges = "3";

alert( apples + oranges ); // "23", عملگر + دوگانه رشته‌ها را ادغام می‌کند
alert( apples + oranges ); // "23" ،عملگر + دوگانه رشته‌ها را ادغام می‌کند
```

اگر خواستیم با آنها مانند عدد برخورد کنیم، باید آنها را به عدد تبدیل کرده و سپس آنها را جمع می‌کنیم:
Expand Down Expand Up @@ -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
```
Expand All @@ -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، قسمت سمت راست اول ارزیابی می‌شود)
```

## عملگر افزایش/کاهش
Expand All @@ -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
```

Expand Down Expand Up @@ -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*/!*
```
Expand All @@ -376,7 +376,7 @@ alert(a); // *!*1*/!*
let counter = 0;
counter++;
++counter;
alert( counter ); // 2، خطوط بالا کار مشابهی انجام دادند
alert( counter ); // 2 ،خطوط بالا کار مشابهی انجام دادند
```
- اگر می‌خواهیم مقداری را افزایش داده *و* بلافاصله از نتیجه عملگر استفاده نماییم، باید از شکل پیشوندی استفاده کنیم:

Expand Down Expand Up @@ -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++ چون
```

با اینکه از نظر فنی مشکلی ندارد ولی چنین روشی خوانایی کد را کاهش می‌دهد. اینکه یک خط کارهای مختلفی انجام می‌دهد مناسب نیست.
Expand Down Expand Up @@ -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` محاسبه می‌شود و به عنوان نتیجه بازگردانده می‌شود.
Expand Down