Skip to content

Commit aa3f2cd

Browse files
authoredFeb 18, 2022
Merge pull request #69 from elseifdilara/master
Basic operators, maths
2 parents 19f0a49 + ff1b076 commit aa3f2cd

File tree

1 file changed

+49
-73
lines changed

1 file changed

+49
-73
lines changed
 

‎1-js/02-first-steps/08-operators/article.md

Lines changed: 49 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -56,31 +56,24 @@ alert( 8 % 3 ); // 2, der Rest von 8 geteilt durch 3
5656

5757
### Potenzierung **
5858

59-
<<<<<<< HEAD
59+
6060
Der Exponentiationsoperator `a ** b` multipliziert `a` mit sich selbst `b` mal.
61-
=======
62-
The exponentiation operator `a ** b` raises `a` to the power of `b`.
6361

64-
In school maths, we write that as a<sup>b</sup>.
65-
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
62+
6663

6764
Zum Beispiel:
6865

6966
```js run
70-
<<<<<<< HEAD
67+
7168
alert( 2 ** 2 ); // 4 (2 mit sich selbst 2 mal multipliziert)
7269
alert( 2 ** 3 ); // 8 (2 * 2 * 2, 3 mal)
7370
alert( 2 ** 4 ); // 16 (2 * 2 * 2 * 2, 4 mal)
74-
=======
75-
alert( 2 ** 2 ); // 2² = 4
76-
alert( 2 ** 3 ); // 2³ = 8
77-
alert( 2 ** 4 ); // 2⁴ = 16
78-
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
71+
7972
```
8073

81-
Just like in maths, the exponentiation operator is defined for non-integer numbers as well.
74+
Genau wie in der Mathematik ist der Potenzierungsoperator auch für nicht-ganzzahlige Zahlen definiert.
8275

83-
For example, a square root is an exponentiation by ½:
76+
Zum Beispiel ist eine Quadratwurzel eine Potenzierung durch ½:
8477

8578
```js run
8679
alert( 4 ** (1/2) ); // 2 (Die Potenz von 1/2 ist gleich der Quadratwurzel)
@@ -118,16 +111,14 @@ Hier ist ein komplexeres Beispiel:
118111
alert(2 + 2 + '1' ); // "41" und nicht "221"
119112
```
120113

121-
<<<<<<< HEAD
114+
122115
Dabei arbeiten die Operatoren einer nach dem anderen. Das erste `+` summiert zwei Zahlen, so dass es `4` zurückgibt, dann fügt das nächste `+` die Zeichenkette `1` hinzu, so dass es `4 + '1' = 41` ergibt.
123-
=======
124-
Here, operators work one after another. The first `+` sums two numbers, so it returns `4`, then the next `+` adds the string `1` to it, so it's like `4 + '1' = '41'`.
116+
125117

126118
```js run
127119
alert('1' + 2 + 2); // "122" and not "14"
128120
```
129-
Here, the first operand is a string, the compiler treats the other two operands as strings too. The `2` gets concatenated to `'1'`, so it's like `'1' + 2 = "12"` and `"12" + 2 = "122"`.
130-
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
121+
131122

132123
Das binäre `+` ist der einzige Operator, der Zeichenketten auf diese Weise unterstützt. Andere arithmetische Operatoren arbeiten nur mit Zahlen und konvertieren ihre Operanden immer in Zahlen.
133124

@@ -203,16 +194,14 @@ Klammern überschreiben alle Prioritäten. Wenn wir mit der Standardreihenfolge
203194

204195
In JavaScript gibt es viele Operatoren. Jeder Operator hat eine entsprechende Vorrangsnummer. Der mit der größeren Nummer wird zuerst ausgeführt. Bei gleicher Rangfolge erfolgt die Ausführung von links nach rechts.
205196

206-
<<<<<<< HEAD
197+
207198
Hier ist ein Auszug aus der [Ranglistentabelle](https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Operators/Operator_Precedence) (Du musst dir das nicht merken, aber beachte, dass unäre Operatoren höher sind als entsprechende binäre):
208-
=======
209-
Here's an extract from the [precedence table](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence) (you don't need to remember this, but note that unary operators are higher than corresponding binary ones):
210-
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
199+
211200

212201
| Vorrang | Name | Zeichen |
213202
|------------|------|------|
214203
| ... | ... | ... |
215-
<<<<<<< HEAD
204+
216205
| 17 | Unäres Plus | `+` |
217206
| 17 | Unäres Minus | `-` |
218207
| 16 | Potenzierung | `**` |
@@ -225,28 +214,16 @@ Here's an extract from the [precedence table](https://developer.mozilla.org/en-U
225214
| ... | ... | ... |
226215

227216
Wie wir sehen können, hat das "unäre Plus" eine Priorität von `17`, die höher ist als die `13` der "Addition" (binäres Plus). Deshalb wirken in dem Ausdruck `"+apples + +oranges"` unäre Pluszeichen vor der Addition.
228-
=======
229-
| 15 | unary plus | `+` |
230-
| 15 | unary negation | `-` |
231-
| 14 | exponentiation | `**` |
232-
| 13 | multiplication | `*` |
233-
| 13 | division | `/` |
234-
| 12 | addition | `+` |
235-
| 12 | subtraction | `-` |
236-
| ... | ... | ... |
237-
| 2 | assignment | `=` |
238-
| ... | ... | ... |
239217

240-
As we can see, the "unary plus" has a priority of `15` which is higher than the `12` of "addition" (binary plus). That's why, in the expression `"+apples + +oranges"`, unary pluses work before the addition.
241-
>>>>>>> 29216730a877be28d0a75a459676db6e7f5c4834
218+
219+
242220

243221
## Zuweisung
244222

245-
<<<<<<< HEAD
246-
Beachten wir, dass eine Zuweisung `=` auch ein Operator ist. Es ist in der Ranglistentabelle mit der sehr niedrigen Priorität `3` aufgeführt.
247-
=======
248-
Let's note that an assignment `=` is also an operator. It is listed in the precedence table with the very low priority of `2`.
249-
>>>>>>> 29216730a877be28d0a75a459676db6e7f5c4834
223+
224+
Beachten wir, dass eine Zuweisung `=` auch ein Operator ist. Sie ist in der Ranglistentabelle mit der sehr niedrigen Priorität `3` aufgeführt.
225+
226+
250227

251228
Wenn wir also eine Variable wie `x = 2 * 2 + 1` zuweisen, werden zuerst die Berechnungen durchgeführt und dann das `=` ausgewertet, wobei das Ergebnis in `x` gespeichert wird.
252229

@@ -260,11 +237,11 @@ alert( x ); // 5
260237

261238
Die Tatsache, dass `=` ein Operator und kein "magisches" Sprachkonstrukt ist, hat eine interessante Implikation.
262239

263-
<<<<<<< HEAD
264-
Die meisten Operatoren in JavaScript geben einen Wert zurück. Das ist bei `+` und `-` offensichtlich, gilt aber auch für `=`.
265-
=======
266-
All operators in JavaScript return a value. That's obvious for `+` and `-`, but also true for `=`.
267-
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
240+
241+
Die meisten Operatoren in JavaScript geben einen Wert zurück. Das ist bei `+` und `-` offensichtlich, dies gilt aber auch für `=`.
242+
243+
244+
268245

269246
Der Aufruf `x = Wert` schreibt den `Wert` in `x` *und gibt ihn dann zurück*.
270247

@@ -282,11 +259,11 @@ alert( a ); // 3
282259
alert( c ); // 0
283260
```
284261

285-
Im obigen Beispiel ist das Ergebnis des Ausdrucks `(a = b + 1)` der Wert, der `a` zugewiesen wurde (d.h. `3`). Es wird dann für weitere Auswertungen verwendet.
262+
Im obigen Beispiel ist das Ergebnis des Ausdrucks `(a = b + 1)` der Wert, der `a` zugewiesen wurde (d.h. `3`). Dieser Wert wird dann für weitere Auswertungen verwendet.
286263

287-
Seltsamer Code, nicht wahr? Wir sollten verstehen, wie er funktioniert, denn manchmal sehen wir ihn in JavaScript-Bibliotheken.
264+
Seltsamer Code, nicht wahr? Wir sollten uns über seine Funktionalität klar machen, denn Code wie dieser kommt in JavaScript-Bibliotheken vor.
288265

289-
Trotzdem, bitte schreibe Code nicht so. Solche Tricks machen Code bestimmt nicht klarer oder leserlicher.
266+
Dennoch, bitte schreibe keinen Code auf diese Weise. Tricks wie diese machen Code weder klarer noch leserlicher.
290267

291268
### Verkettung von Zuweisungen
292269

@@ -306,7 +283,7 @@ alert( c ); // 4
306283

307284
Verkettete Zuweisungen werden von rechts nach links ausgewertet. Zuerst wird der ganz rechte Ausdruck `2 + 2` ausgewertet und dann den Variablen auf der linken Seite zugewiesen: `c`, `b` und `a`. Am Ende teilen sich alle Variablen einen einzigen Wert.
308285

309-
Noch einmal: Aus Gründen der Lesbarkeit ist es besser, solchen Code in wenige Zeilen aufzuteilen:
286+
Auch hier gilt: Aufgrund der Lesbarkeit ist es besser, solchen Code in wenige Zeilen aufzuteilen:
310287

311288
```js
312289
c = 2 + 2;
@@ -317,7 +294,7 @@ Das ist leichter zu lesen, besonders wenn man den Code mit den Augen schnell sca
317294

318295
## An Ort und Stelle modifizieren
319296

320-
Wir müssen oft einen Operator auf eine Variable anwenden und das neue Ergebnis in derselben Variable speichern.
297+
Häufig müssen wir einen Operator auf eine Variable anwenden und das neue Ergebnis in derselben Variable speichern.
321298

322299
Zum Beispiel:
323300

@@ -327,7 +304,7 @@ n = n + 5;
327304
n = n * 2;
328305
```
329306

330-
Diese Notation kann mit den Operatoren `+=` und `*=` gekürzt werden:
307+
Diese Notation kann man mit den Operatoren `+=` und `*=` abkürzen:
331308

332309
```js run
333310
let n = 2;
@@ -339,7 +316,7 @@ alert( n ); // 14
339316

340317
Für alle arithmetischen und bitweisen Operatoren gibt es kurze "modifizieren-und-zuweisen"-Operatoren: `/=`, `-=`, usw.
341318

342-
Solche Operatoren haben den gleichen Stellenwert wie eine normale Zuweisung, so dass sie nach den anderen Berechnungen durchgeführt werden:
319+
Solche Operatoren haben den gleichen Stellenwert wie eine normale Zuweisung, sodass sie nach den anderen Berechnungen durchgeführt werden:
343320

344321
```js run
345322
let n = 2;
@@ -385,29 +362,29 @@ Beide Anweisungen tun dasselbe: erhöhen `counter` um `1`.
385362
386363
Gibt es da einen Unterschied? Ja, aber wir können es nur sehen, wenn wir den zurückgegebenen Wert von `++/-` verwenden.
387364
388-
Lass uns klären. Wie wir wissen, geben alle Operatoren einen Wert zurück. Inkrementieren/Dekrementieren ist keine Ausnahme. Die Präfix-Form gibt den neuen Wert zurück, während die Postfix-Form den alten Wert zurück gibt (vor dem Inkrementieren/Dekrementieren).
365+
Lass es uns aufklären. Wie wir wissen, geben alle Operatoren einen Wert zurück. Inkrementieren/Dekrementieren ist keine Ausnahme. Die Präfix-Form gibt den neuen Wert zurück, während die Postfix-Form den alten Wert zurück gibt (vor dem Inkrementieren/Dekrementieren).
389366
390-
Um den Unterschied zu sehen, hier ein Beispiel:
367+
Um den Unterschied zu erkennen, hier ein Beispiel:
391368
392369
```js run
393370
let counter = 1;
394371
let a = ++counter; // (*)
395372
396-
alert(a); // *!*2*/!*
373+
alert(a); // 2
397374
```
398375
399-
In der Zeile `(*)` erhöht die *Präfix*-Form von `++counter` den Wert von `counter` und gibt den neuen Wert `2` zurück. Der `alert` zeigt also `2`.
376+
In der Zeile `(*)` erhöht die *Präfix*-Form von `++counter` den Wert von `counter` und gibt den neuen Wert `2` zurück. Der `alert` gibt also `2` zurück.
400377
401378
Verwenden wir nun die Postfix-Form:
402379
403380
```js run
404381
let counter = 1;
405382
let a = counter++; // (*) ++counter zu counter++ geändert
406383
407-
alert(a); // *!*1*/!*
384+
alert(a); // 1
408385
```
409386
410-
In der Zeile `(*)` erhöht die *Postfix*-Form `counter++` ebenfalls `counter`, gibt aber den *alten* Wert (vor dem Inkrementieren) zurück. Der `alert` zeigt also `1`.
387+
In der Zeile `(*)` erhöht die *Postfix*-Form `counter++` ebenfalls den Wert von `counter`, gibt aber den *alten* Wert (vor dem Inkrementieren) zurück. Der `alert` gibt also `1` zurück.
411388
412389
Zusammenfassend:
413390
@@ -419,13 +396,13 @@ Zusammenfassend:
419396
++counter;
420397
alert( counter ); // 2, die obigen Zeilen haben dasselbe getan
421398
```
422-
- Wenn wir einen Wert erhöhen *und* sofort das Ergebnis des Operators verwenden möchten, benötigen wir die Präfix-Formu:
399+
- Wenn wir einen Wert erhöhen *und* sofort das Ergebnis des Operators verwenden möchten, benötigen wir die Präfix-Form:
423400
424401
```js run
425402
let counter = 0;
426403
alert( ++counter ); // 1
427404
```
428-
- Wenn wir einen Wert erhöhen, aber seinen vorherigen Wert verwenden möchten, benötigen wir die Postfix-Form:
405+
- Wenn wir einen Wert erhöhen, aber seinen vorherigen Wert noch verwenden möchten, benötigen wir die Postfix-Form:
429406
430407
```js run
431408
let counter = 0;
@@ -449,7 +426,7 @@ let counter = 1;
449426
alert( 2 * counter++ ); // 2, weil counter ++ den "alten" Wert zurückgibt
450427
```
451428
452-
Obwohl technisch in Ordnung, macht eine solche Notation Code normalerweise weniger lesbar. Eine Zeile macht mehrere Dinge -- nicht gut.
429+
Obwohl dies technisch in Ordnung ist, macht eine solche Notation Code normalerweise unlesbarer. Eine Zeile in der mehrere Operationen ausgeführt werden -- nicht gut.
453430
454431
Beim Lesen von Code kann ein schneller "vertikaler" Augenscan leicht etwas wie `counter++` übersehen, und es ist nicht offensichtlich, dass die Variable größer wird.
455432
@@ -478,17 +455,16 @@ Die Liste der Operatoren:
478455
- Rechtsverschiebung ( `>>` )
479456
- Null füllende Rechtsverschiebung ( `>>>` )
480457
481-
<<<<<<< HEAD
482-
Diese Operatoren werden sehr selten verwendet, wenn wir mit Zahlen auf der untersten (bitweisen) Ebene herumspielen müssen. Wir werden diese Operatoren in absehbarer Zeit nicht brauchen, da die Webentwicklung kaum Gebrauch von ihnen macht, aber in einigen speziellen Bereichen, wie der Kryptographie, sind sie nützlich. Bei bedarf kannst du den Artikel [Bitweise Operatoren](https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Operators/Bitwise_Operatoren) auf MDN lesen.
483-
=======
484-
These operators are used very rarely, when we need to fiddle with numbers on the very lowest (bitwise) level. We won't need these operators any time soon, as web development has little use of them, but in some special areas, such as cryptography, they are useful. You can read the [Bitwise Operators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Bitwise) chapter on MDN when a need arises.
485-
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
458+
459+
Diese Operatoren werden sehr selten verwendet, z.B. wenn wir mit Zahlen auf der untersten (bitweisen) Ebene herumspielen müssen. Wir werden diese Operatoren in absehbarer Zeit nicht brauchen, da in der Webentwicklung kaum Gebrauch von ihnen gemacht wird, aber in einigen speziellen Bereichen, wie der Kryptographie, sind sie nützlich. Bei bedarf kannst du den Artikel [Bitweise Operatoren](https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Operators/Bitwise_Operatoren) auf MDN lesen.
460+
461+
486462
487463
## Komma
488464
489465
Der Komma-Operator `,` ist einer der seltensten und ungewöhnlichsten Operatoren. Manchmal wird damit kürzerer Code geschrieben, sodass wir ihn kennen müssen, um zu verstehen, was vor sich geht.
490466
491-
Mit dem Komma-Operator können wir mehrere Ausdrücke auswerten und durch ein Komma `,` trennen. Jeder von ihnen wird ausgewertet, aber nur das Ergebnis des letzten wird zurückgegeben.
467+
Mit dem Komma-Operator können wir mehrere Ausdrücke auswerten und sie durch ein Komma `,` trennen. Jeder von ihnen wird ausgewertet, aber nur das Ergebnis des letzten Ausdrucks wird zurückgegeben.
492468
493469
Zum Beispiel:
494470
@@ -503,14 +479,14 @@ alert( a ); // 7 (das Ergebnis von 3 + 4)
503479
Hier wird der erste Ausdruck `1 + 2` ausgewertet und sein Ergebnis verworfen. Dann wird `3 + 4` ausgewertet und als Ergebnis zurückgegeben.
504480
505481
```smart header="Komma hat eine sehr geringe Priorität"
506-
Bitte beachten Sie, dass der Komma-Operator eine sehr niedrige Priorität hat, niedriger als `=`, daher sind Klammern im obigen Beispiel wichtig.
482+
Bitte beachte, dass der Komma-Operator eine sehr niedrige Priorität hat, niedriger als `=`, daher sind Klammern im obigen Beispiel wichtig.
507483
508-
Ohne sie: `a = 1 + 2, 3 + 4` wertet zuerst `+` aus, summiert die Zahlen zu `a = 3, 7`, dann weist der Zuweisungsoperator `=` `a = 3` zu, und der Rest ist ignoriert. Es ist wie `(a = 1 + 2), 3 + 4`.
484+
Ohne Klammern: `a = 1 + 2, 3 + 4` wertet zuerst `+` aus, summiert die Zahlen zu `a = 3, 7`, dann weist der Zuweisungsoperator `=` `a = 3` zu, der Rest wird ignoriert. Es ist wie `(a = 1 + 2), 3 + 4`.
509485
```
510486
511-
Warum brauchen wir einen Operator, der alles außer dem letzten Ausdruck wegwirft?
487+
Wozu brauchen wir einen Operator, der alles außer dem letzten Ausdruck verwirft?
512488
513-
Manchmal wird es in komplexeren Konstrukten verwendet, um mehrere Aktionen in eine Zeile zu setzen.
489+
Manchmal wird der Operator in komplexeren Konstrukten verwendet, um mehrere Aktionen in eine Zeile zu setzen.
514490
515491
Zum Beispiel:
516492
@@ -521,4 +497,4 @@ for (*!*a = 1, b = 3, c = a * b*/!*; a < 10; a++) {
521497
}
522498
```
523499
524-
Solche Tricks werden in vielen JavaScript-Frameworks verwendet. Deshalb erwähnen wir sie. In der Regel verbessern sie jedoch nicht die Lesbarkeit des Codes, daher sollten wir vor der Verwendung gut überlegen.
500+
Solche Tricks werden in vielen JavaScript-Frameworks verwendet. Deshalb erwähnen wir sie. In der Regel verbessern sie jedoch nicht die Lesbarkeit des Codes, daher sollten wir uns ihre Verwendung gut überlegen.

0 commit comments

Comments
 (0)
Please sign in to comment.