From 21019f9b66cd3a4524fa347ded1372921bd57e0a Mon Sep 17 00:00:00 2001 From: Ilya Kantor Date: Mon, 5 Jun 2017 14:39:04 +0300 Subject: [PATCH 01/22] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index ffc297f6..42e0a404 100755 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ This repository hosts the content of the JavaScript Tutorial, published at [https://javascript.info](https://javascript.info). +For links to other languages see [https://github.com/iliakan/javascript-tutorial](https://github.com/iliakan/javascript-tutorial). + Please use this repository to file issues and suggest PRs for the text. ## Structure From 168b273caaecc9151bdfdc5313add3ce6142b447 Mon Sep 17 00:00:00 2001 From: Ilya Kantor Date: Mon, 5 Jun 2017 14:40:44 +0300 Subject: [PATCH 02/22] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 42e0a404..8938c5dd 100755 --- a/README.md +++ b/README.md @@ -1,9 +1,10 @@ # The JavaScript Tutorial -This repository hosts the content of the JavaScript Tutorial, published at [https://javascript.info](https://javascript.info). +This repository hosts the content of the Modern JavaScript Tutorial, published at [https://javascript.info](https://javascript.info). -For links to other languages see [https://github.com/iliakan/javascript-tutorial](https://github.com/iliakan/javascript-tutorial). +Other languages: +- Russian: [https://github.com/iliakan/javascript-tutorial-ru](https://github.com/iliakan/javascript-tutorial-ru). Please use this repository to file issues and suggest PRs for the text. From f284fea36286afd48ad675e3527f3849fe07294b Mon Sep 17 00:00:00 2001 From: Aman Bangad Date: Mon, 5 Jun 2017 09:04:55 -0400 Subject: [PATCH 03/22] Update article.md output fixed --- 1-js/07-object-oriented-programming/13-mixins/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/07-object-oriented-programming/13-mixins/article.md b/1-js/07-object-oriented-programming/13-mixins/article.md index 624f4426..a0e14140 100644 --- a/1-js/07-object-oriented-programming/13-mixins/article.md +++ b/1-js/07-object-oriented-programming/13-mixins/article.md @@ -83,7 +83,7 @@ class User { Object.assign(User.prototype, sayHiMixin); // now User can say hi -new User("Dude").sayHi(); // Hi Dude! +new User("Dude").sayHi(); // Hello Dude! ``` Please note that the call to the parent method `super.say()` from `sayHiMixin` looks for the method in the prototype of that mixin, not the class. From 109fe901514db5cabe5ae170704437b0f2bfd88f Mon Sep 17 00:00:00 2001 From: Nurlan Alekberov Date: Mon, 5 Jun 2017 17:10:50 +0400 Subject: [PATCH 04/22] Update article.md --- 1-js/02-first-steps/05-types/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/02-first-steps/05-types/article.md b/1-js/02-first-steps/05-types/article.md index 2dd1ea0d..9c8cec65 100644 --- a/1-js/02-first-steps/05-types/article.md +++ b/1-js/02-first-steps/05-types/article.md @@ -231,7 +231,7 @@ The last three lines may need additional explanations: There are 7 basic types in JavaScript. - `number` for numbers of any kind: integer or floating-point. -- `string` for strings. A string may have one more more characters, there's no separate single-character type. +- `string` for strings. A string may have one or more characters, there's no separate single-character type. - `boolean` for `true`/`false`. - `null` for unknown values -- a standalone type that has a single value `null`. - `undefined` for unassigned values -- a standalone type that has a single value `undefined`. From 8d150d44dbc7f3d7fcb3057cede50c27c33609be Mon Sep 17 00:00:00 2001 From: Aman Bangad Date: Mon, 5 Jun 2017 09:59:09 -0400 Subject: [PATCH 05/22] Update article.md The old code doesn't work. Is this what you wanted to show? --- 2-ui/1-document/01-browser-environment/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/2-ui/1-document/01-browser-environment/article.md b/2-ui/1-document/01-browser-environment/article.md index 5f6910dc..ffbc5bc1 100644 --- a/2-ui/1-document/01-browser-environment/article.md +++ b/2-ui/1-document/01-browser-environment/article.md @@ -25,7 +25,7 @@ function sayHi() { } // global functions are accessible as properties of window -alert(window.sayHi); +window.sayHi(); ``` And here we use it as a browser window, to see the window height: From 065a66f454e2bcbc269b44476ecaeacaf8e0b00f Mon Sep 17 00:00:00 2001 From: Daniel Lo Nigro Date: Tue, 6 Jun 2017 11:47:19 +1000 Subject: [PATCH 06/22] Link to free Visual Studio Community edition, and clarify cross-platform paragraph --- 1-js/01-getting-started/2-code-editors/article.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/1-js/01-getting-started/2-code-editors/article.md b/1-js/01-getting-started/2-code-editors/article.md index 8a835e61..2b9f016a 100644 --- a/1-js/01-getting-started/2-code-editors/article.md +++ b/1-js/01-getting-started/2-code-editors/article.md @@ -15,12 +15,12 @@ An IDE loads the project (can be many files), and then allows to navigate betwee If you haven't considered selecting an IDE, look at the following variants: - IntelliJ editors: [WebStorm](http://www.jetbrains.com/webstorm/) for frontend development and [PHPStorm (PHP)](http://www.jetbrains.com/phpstorm/), [IDEA (Java)](http://www.jetbrains.com/idea/), [RubyMine (Ruby)](http://www.jetbrains.com/ruby/) and other if you need additional languages. -- Visual Studio is fine if you're a .NET developer. +- Visual Studio is fine if you're a .NET developer, and a free version is available ([Visual Studio Community](https://www.visualstudio.com/vs/community/)) - Eclipse-based products, like [Aptana](http://www.aptana.com/) and Zend Studio. - [Komodo IDE](http://www.activestate.com/komodo-ide) and it's lightweight free version [Komodo Edit](http://www.activestate.com/komodo-edit). - [Netbeans](http://netbeans.org/). -All of them with the exception of Visual Studio are cross-platform. Visual Studio is now available for Mac and for Windows (https://www.visualstudio.com/vs/visual-studio-mac/) +All of the IDEs listed above are available on both Windows and Mac, and the IDEs other than Visual Studio are also available on Linux. Most IDEs are paid, but have a trial period. Their cost is usually negligible compared to a qualified developer's salary, so just choose the best one for you. From 074151aadf6c30d2dbdceb5e95816b95e044b4fc Mon Sep 17 00:00:00 2001 From: AGCB Date: Mon, 5 Jun 2017 21:56:40 -0700 Subject: [PATCH 07/22] two typos --- 1-js/02-first-steps/06-type-conversions/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/02-first-steps/06-type-conversions/article.md b/1-js/02-first-steps/06-type-conversions/article.md index 25a4fd96..71e357ca 100644 --- a/1-js/02-first-steps/06-type-conversions/article.md +++ b/1-js/02-first-steps/06-type-conversions/article.md @@ -93,7 +93,7 @@ alert( 1 + '2' ); // '12' (string to the right) alert( '1' + 2 ); // '12' (string to the left) ``` -That only happens when one of arguments is a string. Otherwise values are converted to numbers. +That only happens when one of the arguments is a string. Otherwise, values are converted to numbers. ```` ## ToBoolean From 600733ee0f287db73b89800f578d1ca7b8b3a31f Mon Sep 17 00:00:00 2001 From: Somadina Mbadiwe Date: Tue, 6 Jun 2017 03:03:59 -0700 Subject: [PATCH 08/22] Update article.md --- 1-js/02-first-steps/09-alert-prompt-confirm/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/02-first-steps/09-alert-prompt-confirm/article.md b/1-js/02-first-steps/09-alert-prompt-confirm/article.md index d72bf5bf..fd449b79 100644 --- a/1-js/02-first-steps/09-alert-prompt-confirm/article.md +++ b/1-js/02-first-steps/09-alert-prompt-confirm/article.md @@ -87,7 +87,7 @@ For example: ```js run let isBoss = confirm("Are you the boss?"); -alert( isBoss ); // true is OK is pressed +alert( isBoss ); // true if OK is pressed ``` ## Summary From 0cecd96f1dd0a73c45bf9ee033287a39034b1899 Mon Sep 17 00:00:00 2001 From: Ashmeet Singh Date: Tue, 6 Jun 2017 16:30:23 +0530 Subject: [PATCH 09/22] Fixed typos in article.md There were some typos in the first line of A semicolon section. (Line 122). I have proposed a possible fix. --- 1-js/03-code-quality/02-coding-style/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/03-code-quality/02-coding-style/article.md b/1-js/03-code-quality/02-coding-style/article.md index d871e217..7af470a2 100644 --- a/1-js/03-code-quality/02-coding-style/article.md +++ b/1-js/03-code-quality/02-coding-style/article.md @@ -119,7 +119,7 @@ There are two types of indents: ### A semicolon -A semicolons should be after each statement. Even if could possibly be skipped. +A semicolon should be present after each statement. Even if it could be possibly be skipped. There are languages where a semicolon is truly optional. It's rarely used there. From e2790d0253a9838378f914e426bdbb2b7c4b9fdf Mon Sep 17 00:00:00 2001 From: Somadina Mbadiwe Date: Tue, 6 Jun 2017 05:27:47 -0700 Subject: [PATCH 10/22] Update article.md --- 1-js/03-code-quality/01-debugging-chrome/article.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/1-js/03-code-quality/01-debugging-chrome/article.md b/1-js/03-code-quality/01-debugging-chrome/article.md index 44bc1fbe..f48f343d 100644 --- a/1-js/03-code-quality/01-debugging-chrome/article.md +++ b/1-js/03-code-quality/01-debugging-chrome/article.md @@ -48,7 +48,7 @@ For example, here `1+2` results in `3`, and `hello("debugger")` returns nothing, Let's examine what's going on within the code of the [example page](debugging/index.html). In `hello.js`, click at the line number `4`. Yes, right on the `"4"` digit, not on the code. -Contratulations! You've set a breakpoint. Please also click on the number for line `8`. +Congratulations! You've set a breakpoint. Please also click on the number for line `8`. Should look like this (blue is where you should click): @@ -56,7 +56,7 @@ Should look like this (blue is where you should click): A *breakpoint* is a point of code where the debugger will automatically pause the JavaScript execution. -While the code is paused, we can examine current variables, execute commands in the console etc. In other words, to debug it. +While the code is paused, we can examine current variables, execute commands in the console etc. In other words, we can debug it. We can always find a list of breakpoints in the right pane. That's useful when we have many breakpoints in various files. It allows to: - Quickly jump to the breakpoint in the code (by clicking on it in the right pane). @@ -97,7 +97,7 @@ As the breakpoint is set, the execution pauses at the 4th line: ![](chrome-sources-debugger-pause.png) -Please open the informational dropdowns to the right (labelled with arrows). They allow to examine the current code state: +Please open the informational dropdowns to the right (labelled with arrows). They allow you to examine the current code state: 1. **`Watch` -- shows current values for any expressions.** From 31e3c58f03ec39880f6f4a5b8fe94f592560ddb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Sevilla=20Mart=C3=ADn?= Date: Tue, 6 Jun 2017 09:08:28 -0400 Subject: [PATCH 11/22] Fix RegEx methods typo in code --- 5-regular-expressions/02-regexp-methods/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/5-regular-expressions/02-regexp-methods/article.md b/5-regular-expressions/02-regexp-methods/article.md index ddd987b3..f613e3d9 100644 --- a/5-regular-expressions/02-regexp-methods/article.md +++ b/5-regular-expressions/02-regexp-methods/article.md @@ -53,7 +53,7 @@ The array may have more than one element. For instance: ```js run -lar str = "JavaScript is a programming language"; +let str = "JavaScript is a programming language"; let result = str.match( *!*/JAVA(SCRIPT)/i*/!* ); From 6ba868b37535f9dca211cecdf796145fda791bbf Mon Sep 17 00:00:00 2001 From: Moojjoo Date: Tue, 6 Jun 2017 14:57:59 -0400 Subject: [PATCH 12/22] Update article.md Line 388 word smithing. --- 1-js/02-first-steps/14-function-basics/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/02-first-steps/14-function-basics/article.md b/1-js/02-first-steps/14-function-basics/article.md index 0d0dbe92..742aef2d 100644 --- a/1-js/02-first-steps/14-function-basics/article.md +++ b/1-js/02-first-steps/14-function-basics/article.md @@ -385,7 +385,7 @@ These are exceptions. Generally functions names should be concise, but descripti ## Functions == Comments -Functions should be short and do exactly one thing. If that thing is big, maybe it's worth to split the function into few smaller functions. Sometimes following this rule may be not easy, but it's a definitely good thing. +Functions should be short and do exactly one thing. If that thing is big, maybe it's worth to split the function into few smaller functions. Sometimes following this rule may not be that easy, but it's a definitely good thing. A separate function is not only easier to test and debug -- its very existence is a great comment! From 3f338a6f08d92d642a28a3c925e9e3b352c5c45d Mon Sep 17 00:00:00 2001 From: Ilya Kantor Date: Wed, 7 Jun 2017 12:24:26 +0300 Subject: [PATCH 13/22] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8938c5dd..8d1eb0ab 100755 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ This repository hosts the content of the Modern JavaScript Tutorial, published a Other languages: - Russian: [https://github.com/iliakan/javascript-tutorial-ru](https://github.com/iliakan/javascript-tutorial-ru). +- Chinese: the ongoing translation at [https://github.com/iliakan/javascript-tutorial-cn](https://github.com/iliakan/javascript-tutorial-cn), go ahead to join. Please use this repository to file issues and suggest PRs for the text. From a5d4d5fa9840ffae9deea70b51d3064b9ba9d7de Mon Sep 17 00:00:00 2001 From: Artem Tymchenko Date: Wed, 7 Jun 2017 14:02:37 +0300 Subject: [PATCH 14/22] Update article.md --- 6-async/03-promise-chaining/article.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/6-async/03-promise-chaining/article.md b/6-async/03-promise-chaining/article.md index 229a6309..a9d21f59 100644 --- a/6-async/03-promise-chaining/article.md +++ b/6-async/03-promise-chaining/article.md @@ -41,8 +41,8 @@ The idea is that the result is passed through the chain of `.then` handlers. Here the flow is: 1. The initial promise resolves in 1 second `(*)`, -2. Then the `.this` handler is called `(**)`. -3. The value that it returns is passed to the next `.this` handler `(***)` +2. Then the `.then` handler is called `(**)`. +3. The value that it returns is passed to the next `.then` handler `(***)` 4. ...and so on. As the result is passed along the chain of handlers, we can see a sequence of `alert` calls: `1` -> `2` -> `4`. From 7086f278d159642ae154002139d4cbc86f6c935f Mon Sep 17 00:00:00 2001 From: Vikas Date: Wed, 7 Jun 2017 15:31:18 -0500 Subject: [PATCH 15/22] Remove unnecessary quotation marks When demonstrating how to start and end comments, there is a code block AND quotations, which can be confusing. Since the code block is already there, the quotation marks are redundant. --- 1-js/02-first-steps/02-structure/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/02-first-steps/02-structure/article.md b/1-js/02-first-steps/02-structure/article.md index 3a5aa88e..3cdea514 100644 --- a/1-js/02-first-steps/02-structure/article.md +++ b/1-js/02-first-steps/02-structure/article.md @@ -114,7 +114,7 @@ alert('Hello'); alert('World'); // This comment follows the statement ``` -**Multiline comments start with a forward slash and an asterisk "/*" and end with an asterisk and a forward slash "*/".** +**Multiline comments start with a forward slash and an asterisk /* and end with an asterisk and a forward slash */.** Like this: From f7b8116840f4a92da2199d2b90cdfd00131e87f2 Mon Sep 17 00:00:00 2001 From: Vikas Date: Wed, 7 Jun 2017 19:11:57 -0500 Subject: [PATCH 16/22] Fix code reference typo The code comments have (1) as null > 0, and (3) as null >= 0, but in the textual explanation, it was incorrectly stated as (3) null > 0, and (1) null >= 0. --- 1-js/02-first-steps/08-comparison/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/02-first-steps/08-comparison/article.md b/1-js/02-first-steps/08-comparison/article.md index fca656c2..de50f5bd 100644 --- a/1-js/02-first-steps/08-comparison/article.md +++ b/1-js/02-first-steps/08-comparison/article.md @@ -176,7 +176,7 @@ alert( null >= 0 ); // (3) *!*true*/!* Yeah, mathematically that's strange. The last result states that "`null` is equal or greater than zero". Then one of the comparisons above must be correct, but they are both falsy. -The reason is that an equality check `==` and comparisons `> < >= <=` work differently. Comparisons convert `null` to a number, hence treat it as `0`. That's why (1) `null >= 0` is true and (3) `null > 0` is false. +The reason is that an equality check `==` and comparisons `> < >= <=` work differently. Comparisons convert `null` to a number, hence treat it as `0`. That's why (3) `null >= 0` is true and (1) `null > 0` is false. From the other hand, the equality check `==` for `undefined` and `null` works by the rule, without any conversions. They equal each other and don't equal anything else. That's why (2) `null == 0` is false. From 295de22b723441d58baa8d11dd5ef1e28f593452 Mon Sep 17 00:00:00 2001 From: Wyatt Pearsall Date: Thu, 8 Jun 2017 09:42:22 -0700 Subject: [PATCH 17/22] Fix typo and formatting --- 1-js/05-data-types/08-keys-values-entries/article.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/1-js/05-data-types/08-keys-values-entries/article.md b/1-js/05-data-types/08-keys-values-entries/article.md index f18c065b..88f12669 100644 --- a/1-js/05-data-types/08-keys-values-entries/article.md +++ b/1-js/05-data-types/08-keys-values-entries/article.md @@ -1,7 +1,7 @@ # Object.keys, values, entries -Let's step away from the indivitual data structures and talk about the iterations over them. +Let's step away from the individual data structures and talk about the iterations over them. In the previous chapter we saw methods `map.keys()`, `map.values()`, `map.entries()`. @@ -63,8 +63,9 @@ for(let value of Object.values(user)) { } ``` -```smart header="`Object.keys/values/entries` ignore symbolic properties" -Just like `for..in` loop, these methods ignore properties that use `Symbol(...)` as keys. +## Object.keys/values/entries ignore symbolic properties + +Just like a `for..in` loop, these methods ignore properties that use `Symbol(...)` as keys. Usually that's convenient. But if we want symbolic keys too, then there's a separate method [Object.getOwnPropertySymbols](mdn:js/Object/getOwnPropertySymbols) that returns an array of only symbolic keys. Also, the method [Reflect.ownKeys(obj)](mdn:js/Reflect/ownKeys) returns *all* keys. ``` From ad912fffd0c95995737a2710a43910215512d7de Mon Sep 17 00:00:00 2001 From: Brian Gates Date: Fri, 9 Jun 2017 19:08:59 -0400 Subject: [PATCH 18/22] fix grammar: "only exist" s/b "exist only" To say features "only exist" in JavaScript means that the features don't do anything else, they only exist. JS is unique because it's the only browser technology which has its feature set; the features exist only in JS. --- 1-js/01-getting-started/1-intro/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/01-getting-started/1-intro/article.md b/1-js/01-getting-started/1-intro/article.md index 07cbc18a..de5647b5 100644 --- a/1-js/01-getting-started/1-intro/article.md +++ b/1-js/01-getting-started/1-intro/article.md @@ -89,7 +89,7 @@ There are at least *three* great things about JavaScript: + Supported by all major browsers and enabled by default. ``` -Combined, these 3 things only exist in JavaScript and no other browser technology. +Combined, these 3 things exist only in JavaScript and no other browser technology. That's what makes JavaScript unique. That's why it is the most widespread way of creating browser interfaces. From a5df0296aab6f67054626e1a5626e0764f0f8882 Mon Sep 17 00:00:00 2001 From: Brian Gates Date: Fri, 9 Jun 2017 19:12:00 -0400 Subject: [PATCH 19/22] remove apostrophe, fix grammar --- 1-js/01-getting-started/2-code-editors/article.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/1-js/01-getting-started/2-code-editors/article.md b/1-js/01-getting-started/2-code-editors/article.md index 2b9f016a..d2120eb9 100644 --- a/1-js/01-getting-started/2-code-editors/article.md +++ b/1-js/01-getting-started/2-code-editors/article.md @@ -10,14 +10,14 @@ There are two archetypes: IDE and lightweight editors. Many people feel comforta The term [IDE](https://en.wikipedia.org/wiki/Integrated_development_environment) (Integrated Development Environment) means a powerful editor with many features that usually operates on a "whole project". As said, that's not just an editor, but a full-scale "development environment". -An IDE loads the project (can be many files), and then allows to navigate between files, provides autocompletion based on the whole project, integrates with version management system (like [git](https://git-scm.com/)), with testing environment and other "project-level" stuff. +An IDE loads the project (can be many files), and then allows navigation between files, provides autocompletion based on the whole project, integrates with version management system (like [git](https://git-scm.com/)), with testing environment and other "project-level" stuff. If you haven't considered selecting an IDE, look at the following variants: - IntelliJ editors: [WebStorm](http://www.jetbrains.com/webstorm/) for frontend development and [PHPStorm (PHP)](http://www.jetbrains.com/phpstorm/), [IDEA (Java)](http://www.jetbrains.com/idea/), [RubyMine (Ruby)](http://www.jetbrains.com/ruby/) and other if you need additional languages. - Visual Studio is fine if you're a .NET developer, and a free version is available ([Visual Studio Community](https://www.visualstudio.com/vs/community/)) - Eclipse-based products, like [Aptana](http://www.aptana.com/) and Zend Studio. -- [Komodo IDE](http://www.activestate.com/komodo-ide) and it's lightweight free version [Komodo Edit](http://www.activestate.com/komodo-edit). +- [Komodo IDE](http://www.activestate.com/komodo-ide) and its lightweight free version [Komodo Edit](http://www.activestate.com/komodo-edit). - [Netbeans](http://netbeans.org/). All of the IDEs listed above are available on both Windows and Mac, and the IDEs other than Visual Studio are also available on Linux. From 3bb2bb61ba037beb80fb266251b5fbfbe281808d Mon Sep 17 00:00:00 2001 From: Brian Gates Date: Fri, 9 Jun 2017 19:17:21 -0400 Subject: [PATCH 20/22] fix grammar --- 1-js/02-first-steps/01-hello-world/article.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/1-js/02-first-steps/01-hello-world/article.md b/1-js/02-first-steps/01-hello-world/article.md index daecf9b7..3307f1a6 100644 --- a/1-js/02-first-steps/01-hello-world/article.md +++ b/1-js/02-first-steps/01-hello-world/article.md @@ -37,7 +37,7 @@ For instance: ``` ```online -You can run the example clicking on a "Play" button in it's right-top corner. +You can run the example by clicking on the "Play" button in its right-top corner. ``` The `