From b6fd2c6e94078c5de47bf22eb8c6f4336cbd229c Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 00:07:12 +0200 Subject: [PATCH 01/31] day 2 fixes --- readMe.md | 52 +++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 43 insertions(+), 9 deletions(-) diff --git a/readMe.md b/readMe.md index 73f1d50..e96541f 100644 --- a/readMe.md +++ b/readMe.md @@ -43,6 +43,8 @@ - [Strings](#strings) - [String Concatenation](#string-concatenation) - [Concatenating using addition operator](#concatenating-using-addition-operator) + - [Long Literal Strings](#long-literal-strings) + - [Escape Sequences in string](#escape-sequences-in-string) - [Template Literals(Template Strings)](#template-literalstemplate-strings) - [String Methods](#string-methods) - [Booleans](#booleans-1) @@ -527,11 +529,11 @@ In the previous section, we mentioned a little bit about data types. Data or val ### Primitive Data Types Primitive data types in JavaScript includes: - 1. Numbers - 2. Strings - 3. Booleans - 4. Null - 5. Undefined + 1. Numbers - Integers, floats + 2. Strings - Any data under single or double quote + 3. Booleans - true or false value + 4. Null - empty value or no value + 5. Undefined - a declared variable without a value Non-primitive data types in JavaScript includes: 1. Objects @@ -720,8 +722,39 @@ console.log(personInfoOne) ```sh Asabeneh Yetayeh. I am 250. I live in Finland ``` +#### Long Literal Strings +A string could be a single character or paragraph or a page. If the string length is too big it does not fit in one line. We can use the backslash character (\) at the end of each line to indicate that the string will continue on the next line. +**Example:** +```js +const paragraph = "My name is Asabeneh Yetayeh. I live in Finland, Helsinki.\ +I am a teacher and I love teaching. I teach HTML, CSS, JavaScript, React, Redux, \ +Node.js, Python, Data Analysis and D3.js for anyone who is interested to learn. \ +In the end of 2019, I was thinking to expand my teaching and to reach \ +to global audience and I started a Python challenge from November 20 - December 19.\ +It was one of the most rewarding and inspiring experience.\ +Now, we are in 2020. I am enjoying preparing the 30DaysOfJavaScript challenge and \ +I hope you are enjoying too." +console.log(paragraph) +``` +#### Escape Sequences in string +In JavaScript and other programming language \ followed by some characters is an escape sequence. Let's see the most common escape characters: +* \n: new line +* \t: Tab means(8 spaces) +* \\\\: Back slash +* \\': Single quote (') +* \\":Double quote (") +```js +console.log('I hope every one is enjoying the 30 Days Of JavaScript challenge.\nDo you ?') # line break +console.log('Days\tTopics\tExercises') +console.log('Day 1\t3\t5') +console.log('Day 2\t3\t5') +console.log('Day 3\t3\t5') +console.log('Day 4\t3\t5') +console.log('This is a back slash symbol (\\)') # To write a back slash +console.log('In every programming language it starts with \"Hello, World!\"') +``` #### Template Literals(Template Strings) -To create a template string, we use back two backticks. We can inject data as expression inside a template string. To inject data, we enclose the expression with a curly bracket({}) followed by a $ sign. See the syntax below. +To create a template string, we use two backticks. We can inject data as expression inside a template string. To inject data, we enclose the expression with a curly bracket({}) followed by a $ sign. See the syntax below. ```js //Syntax `String literal text` @@ -765,7 +798,7 @@ console.log(`${a} is greater than ${b}: ${a > b}`) 2 is greater than 3: false ``` ### String Methods -Everything in JavaScript is an object. A string is a primitive data type that means we can not modify once it is created. The string object has many string methods. There are differnt string methods that can help us to work with strings. +Everything in JavaScript is an object. A string is a primitive data type that means we can not modify once it is created. The string object has many string methods. There are different string methods that can help us to work with strings. 1. *length*: The string *length* method returns the number of characters in a string included empty space. **Example:** @@ -778,7 +811,8 @@ Everything in JavaScript is an object. A string is a primitive data type that me 2. *Accessing characters in a string*: We can access each character in a string using its index. In programming, counting starts from 0. The first index of the string is zero, and the last index is one minus the length of the string. ![Accessing sting by index](./images/string_indexes.png) -Let us access the first character in 'JavaScript' string. + +Let us access different characters in 'JavaScript' string. ```js let string = 'JavaScript' let firstLetter = string[0] @@ -792,7 +826,7 @@ console.log(lastIndex) // 9 console.log(string[lastIndex]) // t ``` -3. *toUpperCase()*: this method changes the string to uppercase letters. +1. *toUpperCase()*: this method changes the string to uppercase letters. ```js let string = 'JavaScript' console.log(string.toUpperCase()) // JAVASCRIPT From d0b95e7c4dea4c43ecd2cd2e65be42f0ffb32c56 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 01:59:41 +0200 Subject: [PATCH 02/31] day 3 --- images/date_time_object.png | Bin 0 -> 82903 bytes readMe.md | 192 ++++++++++++++++++++++++++++-------- 2 files changed, 153 insertions(+), 39 deletions(-) create mode 100644 images/date_time_object.png diff --git a/images/date_time_object.png b/images/date_time_object.png new file mode 100644 index 0000000000000000000000000000000000000000..c5297c747520d4250137edba5edfd344fdb39c08 GIT binary patch literal 82903 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
ek1`b9?&Y?|2>i0b-IrN2~tb zv#OD1FY?Kxen}wE^Emnfl2uYxU%gSWaDKTwAPcrOn#L1`mUvgR2&hq^_wIv6qqzD@s_9=ksoJ`@X-;G|1 zJW|_pv-LJuNY!2SC& zQ8d_Vd*G^kTSX_%DL&wsU?{Y~`@B%S7~!U}@BObO%)~Q@a)5+Aj!SIKA*OtfpT9(| z{6u0k{Nwqe@1~q8u=+Qxi|LiS-uf)Xt{TM`B-B`iEn<2fXD(#{E_=Kf9`msyuL?ms zJwn#$^kP7Khw_+^gf13Hf!GV+)EY*6dXlJB5Fu+SGXGI{3@MDqtV^ z12fMe3fffCYufcl$(!Y=<3e}5#O0|j^G!K!AFV^S^#|y~K*Oj5U`2{}x}!|ns%CRR z$MjLqI@*WegW}po^FIK`s_*#~r7EX4~)DRMykXS{wUJHBe?*s~H^rJvb zlwyH8wV)#uIKn$nr1oTnskBRkmt%O&{X$VvJj`H8dwbkCXU8%SIOH4s=01roR2{bd z?I%G<;8TKzk|ZBm%y2rIuwrXE8ZXeOGKAsbI9aP|!9F;LmCMsudB5$WBbi=k5jSgm zk9%{D#%1~`R<}03Odbo{^`}#%(s~UBuf1v9C;bA#pWxb8ZKr!Mf&`_<`MO1VkPgPP=MQFx|Ul7PTp?)FnTb@^5Dnw}k4M4?w0 zyNi(5Dq{6J5HBYh%R5O1Tr5W(Gw2q1U(YS&e3(ph{f;RD?tO zQX3CCrE?f8Ua7&x>UZyDnRglHbWP)y;J+K7iwdw7cf;MBQ!10?7*AF1J@T3eNN=C# zo*>%!EWjWgJiB*CAei~q3T$Lftt7-BCc%1Z&4Ft``Lw*}UCs4GVrSSIWI(kJiJ8)Ccumr=jUMw{598KGHa^kN-qh zE^O*D#4Icx`hrvt!VE$yMv=maPA6OOhnQ3E`Cxyk_3O$?|89J!>YQx|-!l`+L6f`h zkE3dzS6hJJhI$EnCFu5VGQx?c&hr6@mA5+z6Ewa43(9{5Wfa*6<%GG;{S=He zq0WL4Vyc8h-DnVqCQH0ULHgm*$6>BavKe;c5Z;rg%MmVBG_k(Duls)@q`ba?gz5Sa zn7{wV1QL>Q9<0OHAn-?Bw|b4X63)nhAIgQmt#U$?Y2RS*rX`A3>tv?ZOqYpA3&kqu zJ!Sk^`}zoicT#TcD@gNENif}3lr2T8}v=K1)e zrsTiUN}2e9 zDj6kqsZceqtbn=?^W|Qa-LSN8@Ki_L+HcB_-I& z*hFpO=7`0hu*7t#CU1PUo; zoUy>GD1bRY%{W2MUtW9!o7aI9^!0tDg?UMtk%riz>{zZk6R%Be07tTo+VrVQ))wVCSSAM{LJRJ5j=o80kFaFN`L{c_L9gsYddoRFrWd;bL|k9>U=FW?|_ z2AMVKT~Yr1a5FNlP~NI^Z9=XgrYcsj`c=D9xlk6VnaMvA>cm7T(Z1z1KkZy)z>NP` z6si(Psu$*Mk+mAV!!*^U73|2){8rLgL#qx%%e&ApY2qH1R-Gs|6H`~jaL^@x{_6p( z#LaA$Pjd@B7KG%S!Rj$RN<^zp^-itof3^9y>AF~@-e>a7kDhSwLc0NA$nIOCtQJ_G zG$nocHY$}NFa`xJ8URe6`cS6G{eHYZ8G(x)<%9f{GyfRbg~oq2*+~qCXJgu&X!U^$ zow_WY55{iT{`Drm_m`|0kX>t3`|sMi5}Nw}?)U?Mx2jJH?z{e#>HQV>Gkr-xz)A%X zzLiqu$9npoUH!FVfUDWS2t^1a|4Re^z<8fiT~Yr}2>q{4aQ^7KW{7%0}yGQJ9avRzkF9gP~N7fi+aR*K$7e2Ug;XqEsJ*@u9|_7U?#eb8ug3)8P8U z2<3qeD8G71|6vp9qyk&0?0V1N{)lc*X1E+mPvC94&FVU_M0E9lJl#Z>u zZ9tT!;po*vc{DmpO}V5Ur?Dp^BeT_dJf?DgHQjMkcNjMaV4IgG01PTv*?zTcvsIi* zlbe}Y4opZ13V^-d7Xk1u-zWg!T4d~lt_K-nOp>080~6DRqYVzn0t?*Z!Hxb*{1S zY;ocOK>L&%fKV4l()hgW&3w_>dIV+nyqWVm9#t@!9uA&!XyK%G>O|biT)MGh_rCo; z0ASXB`|$xMg_Q!Q+2ej2{KgaCswwuzQ%wWB0a&#S280U9q^5p{Q@c4pHn?dWFx|44 zjIK~g1V^2b<$kbAUMkH3`Mm1_A3$%E$dMW_jRJ@`5M%r3T=lX_BNCP*XUWiO~J+GG5?I>V50TB|PshrI_B^Wu-3nn{!Kd9#k2+a|*Qn0(D}yCllyL z%{ks1>9T=Q?Q}7F6whohjIKSAFG=b&3Db^H(k`rAF5igm0l@F|lIYO|@OTQVYg(u6 zJCozWg}YtHz)Uy-R#G9x6|AIS1~a4zIE*z_HNEI2BZP8U6{~cKyn&V^x_vMbF`gc7 z_G~}S_I|5Q@nq&jVv41?kxIDRAbsRoJei3XgevFDE}S?yTlC#O=_YIEG4@_h#w?G1 z>)Eh=1*HfOcHZVVJwauVE~1)u9wGSVvu$`F2CFL+ScgorVvv zp2htgMASWN0|nL1Mgbs>oFo`dkZoDeUW3hH94NyM9GB-yf%gK#9Cf|R^H2C#ZV%%F zv*MliDjof8MJ|4X8WM@zu6Y7}mGx@qtHZeD{Y~^xCmidp^!>~jJfvs_W5@ONw`pos zb@ZMYHc6>u!4>^gQxVrg5|1d>t%^oM>(Wc0P?Xwnv+f;OaIZ!B2%4xNAq>M4-#(jkf%fN-?P&5LzB_j^!J;4pLU?JsMhDLx=*2u9e2 zfHP?TWV(l?0xjQf;yD_}*E_&!8yunNN{fNL?eBdPOQ@C5`GT28 zGo}ZQzHEKosZs&npPOjUwHGR*xor=yRx{5E{0IQR1aAUhmp&5xA~==C2@oYVK-@{5pw?);iKN;9&uy*Cp$atKOan|tX2GZ~s_$P5 zE;jW=*QYtI!bUFvwgA-P!5aP}{Wf zlUb3*+@1Hs?SL&d4Xoxjr;J=j>j7q`0jjz8rL5P5kc`wS&D(00a5hyvFS z%%EkRB0W-_W*;F(F@?m8UppOTt3vTI*W@rp|AmV1_Bg&s*0)oDv(&$u$h}K)YLndn zc-3BUZ?1-7eD2qt(Pr)n*FohY@Eu+uw89^=%+f`YqRzj*lH-)WXbLm8XhEsmp{w`rl&j6Kcl0p3fD+}X3+FlbOQE6TF0cGcFis5>gb_lpzwI9M3j7q-*xsq>{tf2gv zNavUO($VzjUFr)wwDwRkBd4bl18s+`7+ugNY<|K43&S(?A8v3S6fl5rN8sYE@8WR| zWIy0}6W`!UHmt)7Sl$^==AC+OR9kf_L;#OLTMXy0wg587z1?vlFYXTa@{40vCQ7P3 zhmHl`lbqM~+^5n*d1V^98wN`Q?@)ySk~*^12LPK~B~$lZTF6sxe8pw z`fntgS+44LoSK2tBwr51?r)BX+$r^1zG+bHq>x4&iZ%x72Mz}S`UaL51b@b>5X-JV&WEg)D;?#mRb5lP6wd`Km?SlePg~JcK?g00A@Z|M;lTcqPE} zc3YnaDl3PSnB1xQYyk3pI&!bJbqsL*3^-=!g!g@NwV&ml5$w`hD$=b^DDDUnqiR>9P5%DtQ*PtypGmvGzBTYZ z1Dur*tD|Qe5jM(J8bcH3gs>q%We{aM69-z36qw{@x01iq3~nGI<$mhj`2#DMdr$SI zvg7Uwv;56l`08n9cyV^qOQbP!SUk(d&nRw0k;L=fYRVt*ZP7Xo%yhw+4EU$S*+qbC z;B&P$&-dbP4enFnPA2>iY2J#yRljEDh!?8(lgDfmeG;Tw zmH}W_B3uR(&vZ>~r?@9YG%1X*kK$WJi62{hygAOc4z!md^O#uT%#3_w_E{qrsL6~3%E)rB`L=;w)Ly8AfCE$F zBp+|RV#OC7e)w}6bPxd19BNb#j**B><(}dGOB?4^o-$OnocHt7m z?iSr}9=Fh;F~!IdJAl{)0TRt4b$v*gI9HAE7Lj}+HN=(egy^SaScq%A(WQ8!?~^M- zY>b^HN@!0TgRF8=;u7n~PyS?SQ?$FomUW}*Q|Yw@VErzZ&nwKd|15~z@Ihu?Kh8OC zow8X`hoP?v_L-3~d$ReNUcL_eflNEtv12mfG75wfXRTiNH``TTzmA6qpFWqg89tin zV7F-k$Rq5Bh_m9eJ3p&otQN4Wj$2^#eOqKzvc|_fjXTaew?qD49 zC_Gx3MbDzU${j|HIbw!Fo++T_g4eqO8UaPZ-XelXBX1zV`eRHeo>pTNPWXel!8jx+ zp=ct}U}Q}KI&fTAGDhfQ4&+PQ^FsMD{d;%@(4$GX{RnR zW$ZDsZiQS;6T~dI7?TE-zG!sRzqn%w1Q0S>-d?85qB zn1KQV%2Tl^{SsaCA)z`VGrc{E@ib%&js6jC3CH)^t8%PBIl-^jhU% zrlnSe28SDBxW8)o{u%qH)~iVwsTvFn{tY$lM>v_Vq=EErPlfx7h)LZ*icY)vm3`)H z6%@@SYvIqB)`K?n4DFv;%{bFyAy{pAn}SSj=2qKynrZObWHOFJ&6UK(O4( z9(Jw^%v3}OKTGbVNpiR2avcBIU}X1)y6Ji&V$vrG3h9EkHepKwFpXKiE&zM`*J>j~ zY+XC(1hHyt5z%@1ClTtMhh4mU=Mw091+35Bb(yJrZM1Q z3Zu}nG97+OTK5UN2p4HjmIHo z9!7R)3(8rv?7$^Gany)bN~`BI*~Nq6q|c(pYm2!$wXx&~V<<%AR9}Uil6LHXIWXlO z>V@8ZYj&n>Xfqiw%ZSbgXA@ge5m{2W!iT^NuBW{$ zn3ZJ7HVe{5dI||9Vc;Jg(T(KUBGQ}8zxY8_)wE0lWy0qFO0T+6b3n37fLM9gteTN%9+!A!Aox8={lvc$3Hg;K4o=l7b?KD|_0i0@34Bvx)y zY?1p|^DFi|V&!AvI!z2|4&GA({f5=1(g=64-GF*E)ut{Q6}j1#w88D-)?HX9a(Q@( zr)CG5M?PI|Wf=$mZIY0FN7c#MOvC$_O~S6kqMb@4oF`Awjhs!m$+G+S2(J?xq?ezaT4I zHm!MgERNB4_i`IGz;yRY_LMIvw=mAnaTaqbNYx|nM-dIicsv{cGZ0obe(0_vX=AYx zyu?Yw%zLPshR_} zNV(;#2Z@Y#0LQsE4VpdnB0h&eH#O@Xe}=WS+4zV!%beRux_7kD^Q>~LDKYnAdYgie zzb2oFqd66mXx^H@qk#!H66ym1+=h!j*I~uAHIq+K(!}H<^wkDYOJ3y=w?+K*nt{ zFT|i%r-f-;L$5nuVTYrQM~3hde+1pjv)4yskRE;AkTp?#=Nz}WvJkeyKXzWXPJQ}8 zfXVdY$PfH91zH`jr{w$k;Pyc=L~=S_?s-zyX#jpoAckt`Gv#vpqZQwg{q!aETmRZL zD%f5-XmqC|II8Vo%9N34hEIN(hHQWup(T@*h3HeZs7P$0g>QAd5E^%!lm+_RqHx3x zoeFcUw1^cR7Lfy~=<^wkS&)j|YNORXR}>uaXURbD=buj~^X!R@=aZu?Tzn&s5i4ZM z9oTZiU@y*H_1dETc0r7A`~0X5#flh-s7mMs9cfJG&o6EvWXPx@R@r(VEb=DDJFW0T z()on2`sn$`+_%nW48DY?pONG99dsSN>wxW61>}0 z95*6bG=TY};1NKwl0aMZR!6omuoKpL!BMay6OkWZ0M8=)b zPI%Kc0qz~NEv@O&`$J5qPdMoXq?T;JoHFKV(o1kp-p^cvCQH-ehSPo*HH#i0a}^1@@+sqCPWMsG+$RXVj^5%wh;W_&6sIMbgz#bm3XF$+ z`n}Stdtjkt-kSoVuuMn)9~8yAdY*Eh55G@w;ult}n1D96Hw&@bKvHHAePGbHC?dV* zGf62=wImhpnvhZ+%m|G=L0fDxO;MKN2m!qFr}@L)N$-kqAK|2kCcna(CK0qSt9U7`vbLItJGu0Q|V?i{!@JqCREfVu`Bj8%V9<{loLK&mnEO z^_IcEmXZbL0c4it9Rft>XNwrX$_Udq`gfIKFdxIEggPMk4hWFL(dgZ%U&@($ZBHU| zq24`{J&PPZYT^z)gwK!+2PwJkm)b6AE^~^<;M5W0b&(m4({H4OFe-$B^ora zovp~?@IJRTBnDNYDMF})Akm|BHr;8m_fwLE69q&+!Lnlg zN1p>=F4P_NNfF?O{pTP(7w+R-L3<Zp$ADK^2Vq=U4F zC>VXT=m+gjSH!Ltj%0?SB=Q!(X*b);f`dB0J(AyZ*N_~Jl@>F4gW8 ze6L=v&Phxa5hP>&i$~$4MI@nT6sm!aT9E4WE>R^ z*5}K6Azc&2#!0aHJV^_l{`%RuXI)jg4t%I8p#$n5+_~_|m!^`Pz)s6h!oBXw5W!z| zwSA=a<2*vF@(_&dA-*bHcjghTnp!>%(xb56&e;}f1!7r_s4m)+s8zP4%6i;F@z>$a zEA3zvtv9glcdp9;SOe;{{EV~>%N~>ifM77iu8TZZp{3ZrYcc~@G)o0i`xvEsJWU9z z(X{<~-Sw-9990uv{MWrY1cF2>Co6(9e51lK08G62?o7#h)s(YD)>`}ihj0&bxdqy! z5(gBYcoD*!f){t#vDNpf?7O=L{uSse9tW8<T3CD7`!QS>29z-02Ix+{Cz zOWH*5Q{2Abh`4;+%b;bM^XokEN!6!7GNyTe(kGG&dO{$Mc*>E3vzru=#5t=i#-iNC zh@^4?kgAVq_n0LsrZJhjip;ix6#`Qa1f8poB=%Iy_z2RRVr9%$GJuR*{{>ca32lJX zKtT{9;+|1ymW%S6$w(FQ0XSez6&j0s-Gxq@#U1@%8G!9ao!``?{EdTnOe&GE$B&CovM8C?R5 z*+t;|-ikSV?u5X;E_-m-oZvyyte^1=go>EGXguxm0(>J+RKM0oVbDvd=}7?HhK@N)pE zSw{~Fq05HD$yf(vkG#(Rz z9U%df32YpQdkN+>6}>L4)Q2ZR*kLPgY5BO+u+=FvzZ~{hrsLA?X@QAk^K4Dfkh|a% zilGdTj^T4=m=*`R8)zJ3EdWrJ)pP8UgXywGw1uA@#s@!!%0t7hb(*9AFHwTo^(43tQq3CG0Na%&rnCP#^I^F4sJ4e-A;*ydBoOT33$X&BLO(dJ2t3H4l?hLcGjePeWMf3MQqp4DtwWAgme z4PXVt4N7-JCN*}qIYgX537V~W7mrwDyyWN4t}qL0fI7a_(gij&t@LA^uM6jQ<*jm^l#)ix&-O8^nxU{h`&}Hw&CVy zZ;H$M(hj71$$nL%B!QY$C~L(Pyx`a;xh{mLb0`s4o{0ZeNcb*to^M`eGVKj{SFpWQ z;BNW#(e7DrIP>`MdFD+|!Q1+EcR$?a?1C(5UTUIjP=%<{+T>ny=Gg1U(@h#l{D2|f zC_HR3pM=Uj#fXtbb0q-OZnxjC5zgJVEw^+v4q!-!K=tADtwo z_)z4x$MPVnS^i|Lylr8Lp#hwG32X4dooz;5aW2u}4JP_i$*>{UFrRE^j>8NYA7BlE zrGsiObX9+TC9V7N%xg?G2M{&RV2tQCKg2n`(gc53(~!fjdfep4V}>JV+*Wb(#lV1I zn%KyjG0#h!dJ|rqF(1uzr`f@-B_FWX6NIjUF5;cNBHH(O_0#V9j8->cY%n4R$!vWS z?&_?(HI*DwmFLKhdLpzL>@bSFH;t%jE!V!PfIjFof}UmX3ZtTcy9~vBF&p}})Hd<9 z#P+-sa%Cy4eYWWA&h~lyxPWt*trws=IWA!8rNt_iD%xsbZj~wf1u3?)`p|;8*Iq9Q zLf--ts+1ZP(N_&1;j8el48F8bD6EKT^_d~WMLDOb_~N~vo%H^or;;oJYzhnTFjQ+c zK@)P4OcH7mX|&MnuoB1(W%Q2#2bCC0)MxuevQ2BNa6WceUtR<=;ydE?_h#;#w@g>v zG%XY25runESl1ape{+ai3o6k-O?6>t*vj}ym78O#2soM0Tgy4nw<1~LExm)l~QbX4r-<55z$m>;z{DvoiXdX9H43nEgivL!k_bs zUd?~nWLSf;JB%ddmO!Op+E$G<_$f(Cv1{!iG7&aC~T=P%Jo%3eIJo*aYdReDEMFf%I&3sQ{pG`2(ei;Q{5rxDg`#X zZf73WI%<|k;L(D$zHUTYtt;gwuv~>iQf)SIkxu#ootS9K>xW9LXc8-qsnCF+2ER(&N%g;3!8j_H3Lnw_X1g8m$u`y z0;G|8mFG?giC#$+L$aY}{w%skF*14@CEUYdwrpT7MnFASB*3Hw_+tun+6;V@?4*db zIos#go?o>8DN@i$h1b2+KJWSbwkf>nA$^lAK_&nI-hP%-TbLI1&&l$XV||x*)SD7T zx5Jv_W&UP86w9>YqmaMynlZeII6Or2BmzT@uqNRcpxOX&h2oQG7**`QFV%0npX-H6*NSZ;CHYk<_(+18gw9k#mJ%mW>E2HNzF$MFcYQH_&@bE zEP}zoPS0}Yqx?nwAQr%830ALy^5a=0a3=pj5W&Qg0N4F6`R{Z7L9u`c7llZf#`V4X z@0yHGS-9pQ;iRqc4_%-o0h$Ixe_m3RKZqWPlmOL+EbM&o526NgO+Yk(e$oe^VgFrs zp~?ivLWq=>eE*<4GLr&iA5>q+ENcHbr~k8~|2vG(S#g_W3uH&?@e)@rB~#Pjr5^v) zqQL9^yv``%?pt1sm(0-vL&8g1#r~itLBt%9LU90Mx_;R9hxz|YT?jDC3!eLle=t#A z0x(JczclFo)zYBO3Z3(>*1uTcvYnj0_UpZRfI%(-R3c5)k(WS$ZAJi~Xa6loX#+}g zN2deU*-e!??r--eR${qxo&d~3`w@RF5L~SiUW^CcCEi_*2bKUat*sgD3ZNcU23VZN z31#-mqEjV?Df_m2(BLjbQ;PUlDBT~l3Z8} zd)4=|hCrYu6b3-H=~mh9JS{nAp|kBz@cx!43&8a{Ky9PjayZ%V(oseeLFA3%R1=YV zpjOT*ddyK&7%1;F+yc1g{dyI?je#7$qah;)H0<5ASkoKxt4?%@w?LusQoZPcSKJAu zeZ5vYY4eTFn}7WlKpzC-n)Y%~0mhPP_YO`@4?r3Lx4^{YG@&L~3{(iwPuu<$CdHbZ z6bMYH@)yG^QT=~e(C)ODuo1X_a2<9#y;YyS1>_N9?o+4JrluVuc3Pgt{na+X_iFxyKw_ z<^->e9wSOV9usveXg7e%T;NJyj)j*JerI*LqnC>wbN1rKi=1t@c{w~8ivK(rg4up6 zM&LS@dO%!I3fD(4n(V_hJYmdOf$;L7tA4?DUWQTlL4hlA@k8%3e7YH7aRZ1}8*JzF zkyLyoGy4FmF5IzG)xyQuadTAJ3e;Xrm%@t-0~dixt%u3)E3xJQF^-iG5}33A^xS>& z*+gplNpS_w^T6BF3Al3NVqPW997P}dJR zG6~0kI)nRu7a+!TNJ7WOsWHAN%-T0Dz^GhD64HKV0o1Jg{aFY(4^-a=03xi11W&>bkbc+BY5>BY zz|Si&>>rEi^+pGQTDwV4@3g@_7w2Kl#*y>gl&2lQ7~L7S|Ee@9VF(U>AQ0Mu$!oO- zXzi#Re+$F{SmAQ(S?2-j2|yWf1KI!SyL4^x8K`P;xk_zaW1b1wqu%#Y@Cc`0h6|`2 z0P%|-&LzxQ&S{vjL}yUN^a}RtW2E+LF+g%6xS`X#BYbzUO0=0C-T$aI`-l0!CwK|! zo)CYb`rWCJ#Aa?_KsPEyDvi}fx_bvu;xzG2g)7|yD4X%4J%SfHP5_#|M8{L0%$h4Z z;A+b|HxP_IX&hWrQeR8P?qSz!lKoseZ#arVil_ufk0ZfR7C1J;Ly`*qzs`Z9Md3C$b9wWX!ajbCCMXN^I*Z!V%r5ad|Xh;AINJx@9Ec~i> zV8i>#wgqt~DnR9aU{UVP8tY~DLAH^_>&M$OxYr||X?K`5O90=GEjoa{Lcb*;|eP)C9EY7nkeqsAbVaLo8m!aX! z^6#RTev>xTACkPhJ3jW>E|hMcY*+vQ7F6>w!pL=UNR@j|Hsc#12HNV>Y+rrk_YfQQ zbt`p49Bg?b9RmcMXNWtlSMcAXU>sApo9q-QEki38R-5403vGg&SD_gQ`#(;j_Gn#* zeAShl)o@p_3-f_5US15{MD9z^w*B_&Gvgo1-cNMdFpp2Q$okFzm6{`aN68gvdtR@5 zR=sftD0<~y^VN@ePrnUq^0dPfJLr7=Mn*;}P$A>Hi+}L}c|!X_@T>gDskZkWa|Xt0g5`+YY3k8z@(I=vPJa!6hm^?Mstu*6EgW zx5|iV!>&Ntb%VI6n(W%~K^fMPK~8x4(97^UY;WC|o1Bk7S>ayk?QgHtS;VXv{(aE@ z-6N|0B7b>WRU~($>=Xaqk2?k;mfu`i>%>!QJM&m7Bd28NBm$1pCA<~BJ^P$Pi zo+NUzBCws-=I713H%Gd94==qeKk@&vDGXJoVAs!{pMn2ggCuci15}Quw0b@u0*=sS zp(F2s1m`qk`lUizAE^Y>L$&)@DL+`<9=l`nD9->A-=jknuI3`Kd5;bkR;UdHK06R3 ztkL10s#;o3o+HbND~oIQkqx_3yJMabx#ORb0Lmi!&(4iI($0fznoYWg;K)bp-Soty zRIAk=#cVA#jE8tx!XIIE8s+Nj7YeLjP%a)sy3#udcT=_A>}~MA`*VF*bwg20OjtRw&IlIW@3Di=ZlHq|!!>8XtI+nkMvZc8VmDH?Qk+&4bqLYEeK&=X&Kq z8VO-0(hEx9&0YgBA{V^=0%gYGRjuv2 zS40FsT0*)(7NsH`(%rF02|fy5&dHfisRiuZ?4L+?4OlLzrU z%EAfc(X#erlE+}J|1o37-qm?rOc+1=N|+J#^rF6fCqoynn#s&#O5{{|tKo6h$Eixa z**+J!Q-oH8Fws~{(NFEm`Z)G1DoN_GgSZ)Q6%`jK1ZDIbujza4P38L}3=vekGqLl`cbcG+8>-Ms&XHCQoEDwvFL$kBYv z-Hs5x4!Lf0XX)D&#_-bT{&YU(#tCaQ!>&+*0HMbQwgY?*x1e40=q|i4!D9zlV4XI2 z1&~AUBdHs#xZenF>gVE&&@0h;Q?_&sBmJ>x66c{PwFo|I)O8xM55dGB7eL<19#z6% zfWG^*`#j`J?Tp7p+uCU2k8-@TBuT4~T_QDMAMy=nc>!%5;crXGN(M^v&tRK9N{}me zHPI9mzp?T)XLkwB`&$`bus@LHLzjR!bz+l=KKXD%8 z5#<2CSx}-3CBHRVzPO9MHbv>Nn&EC{y!W)c$wOMm<_Cm%Fd$4utt^&jUWHF(y*b#M zn%-mXyHApjd9A8z{e7+<>7yg}B9efSec-X6=QPEe* zp@t_Gr5|KMs#Zxj{)}iT1c6DNjF17`Gtexg^~2C6ms)x2C(Yr%hxt)o37^&Qp=_?7 z!4Nn3)9?F`*%n6zan~Z2S^73-xpge>O!!`@@czuhRtrIrd>$(@S8 z!2FXy?}tDJ^nXVdJ^K0^CyjX zZLGXka1Jyj-!Yq9bAQuY53WcXGYYvlUX^OEcAJ@_LGQM^U9IfoFLAaQTWZY0HJN}< z!9V?MYNd3Lv#8mDo3NVv{gftbQKMS-Y4KGpUvuuK4UXrU?3os?B#A=1Cv99Ott+Rb zwAn{LhINeTGLS99Zg%g+@9DJf3)g>(biEFRY`$%QZ?$~~2E*C^67F-p4QC@=W+%XO zUUuU<=`w?}D{*u$XC_D19=*KtN3;s;Q*bFg=5LYU+@ZY7WlY*JEoXEWFWEhlDp6-u zMa5XMUvVK=Uf28ssZse^xTi@!yiGAooT3uzHOZCvQw>*+yBt|V3e}_%WuNY1xn|t` z@Z4Re?@V?3)VFj6>p8|+6J0$VuU(Y7=%d-PG*~Oq=n(@_WXo!%%aWgi4H*i2KR8Z~ zl#^pJptws-k65OXEt70H+k08D$PXL9b$Jrp>j-UCqfUvE)^QolyIk$S)zk5@&H!Lw zg1okm#Su&Vj3pi=cQ%hH%}$duiWf!>3##&oHadxdmZF+L?;pp}T2Df9iD7dgbC1 z)dNwE)=a3InyiG{@-j!bnmkBp;Gsh9f*TnI79n)qiCwE?KxIWSe`{}IekxB>CGw(tnmQe<-ZiB+oasE;38)j5oNi`Uw!1jd$-wV`e z-cY|iC0vW9J~|)+&z;kSv)vGR4GS`O$x4iGqtL1}Dy-pmy#MOaR{vPo2KYAL-9SMa z6lzs|VX^;YX>AIZcjnV#uo?H-C6aU_?&u^2C54@iANFq-~?u&nnPc z$+i0!v9EBXf$6lA>}GG}VU-`q88jVq4YeX_xC7D8fk0tv}a?UdZczQA?4Pi3wpDE39Wt$TTJuZTLk6^D+0Sqc0$J zx25rH?D`RJ?I+z`%(hcUFfe7${FqD}A^IKQDX zPHCnv(S8=VDqTVg2iOJyVS0OXdq>(3m-2hYQBO4r-=$33mP}Bi5vQ)wMGM|r`P6>L za%l@sn*0^|QuHB4i7z`KB1IjqEz|EN_kvPi5KhC%w>(EV@;v3lVXCsl`a{xr*8^l@ zo>qTPpE&0^=y-|L+Hv7het8#L%JrRTMuU@OM|=A*V8ETwje-0x*e3h7Wb0n%vo7sq zjCR&PA(1mi@li}R)|Q|hof`v z8AUcZXl#Uv1bnSGWn-2sDV+rXG6%9&*PsgCc#h=@(2Pt~P(6I05Oufzo?YvO2m1$8Ut6!oht;_{-6OpUjVHG8Ogo5oryB;FZPmVVZ?F zxp&kmUyP1nsfkaw`Qm~C5-h%}aK9tXL(3K)d1v%N_s5eDx+(S_)}2bpS5*$LQM#C! z@$qQ1@%60mQu!pj>Fo!JHWAns=$Xv$E7x>Ar%o?MBRkfGCbJnA0?9{-kbXy^rF5E9j-9X(9a)Gj2 z14Qx5nOpw$ESl#v#_pPNYK21y31bMyLzn0>)ug0jnwMR)-e1cT#L5$Fv(d?1iqv|` zdbzjyZ6w|h9xsrBruBgq>4NUIfkWg$0{)8+x}BV{&Qn_UxWRXq4-pP~(@QCx#ia#X zZeDLA?j27=Y29q0X}F#ir~G zDbZAeLc9o4w{;sR^z}2rW8!bw;kb?^76~hcd!{Z_`2^-G`OPkq@`wc_O8kD7I*2@U z%D=lq%~X)BQ}EJ*l?c9ifE>;)=;={_g~Nvzn~>%23mv6j7)(_*WMj9z#+R3yG6s#u zpIYSY9usSaeCy5=+(ha$=&k{|B;EJ=g-g+|ha=~7!!RBBUJ553({k|cdu685jvD5= zJe;|&H?icMp8lQs`(nL`S;w)f2S$b(92tmU^i0pm#eEz)I}5OEi9!$fxpMTsZ!I75 zzkcclT7I8yT;sxG&9<$Ou<5#y-y^V7cYj|O_{JE|dA@2WMNQ(YOLRCwdK)8$ALuD_ z8&@mIL;@&9_2E1Cn0DOQTG^0Nx1lc-@->RZTg}=bLvN#bNv6L#YT!COh4<9xrNAzT zrzV&__gWRFl0!An&WXH|&#`c`_g!!^Me4DdN}H?q}EQ48g62e`%r5@R}}s zfak261}9Hv-Ck3n(uO}u;OJ#LUXc!@#gW*dD3syhM;sD|;82LkP)-OicEP`D0=FJR zzpOp)KDFS3-OvzAi5M%BGrVBj?ihKF`UiS!5scWq)PiI060U~FbveU`!>d%xa6SC% zZGgaXLcZIhaR+;1@{`~n5~E);t!UlaH5@_C4*qG-w+&|VxDRL8GQ4y4Xqq$y%Az+t zVf0O+<8m+Ie8R;us%(U(VRDE+rky?i#QRKGj|b(G23I!rP9k&f;=OSBez<%=Y={YF zCC}7bIBr0oXfH^5YxVDxH0)^f;2d)i2JLFMz3w7`_XoaPhP_p3yZ$EZnWy<*;_WGY z6Lq*`tX+6+bO`2g1oP2Lb7ZA?3bYrFV7m&#E@7_&$s@Jf-8>~9$mGN|7-55XGDi0Z zew`KVl;g=sQZaBX)o*KqFhN={cl366CEdT zUoo`ULr=9!y#AR{TmS!f%|E#Uoc=%?#gh^IAMf}Vb>J!xmk$Jf`^yMwpr51S|DxLb zSHbr#_67DoKgr*(3;vW2fSSqukk@{r70397i8ucCmrdvp5`%j8KfkR%-{ajv|ITlJ z`M>+IIX6P+D6o6L;c9ICO%Y;OydK9LWb=BS?{*B~%fklZlm2pp{Kr4? zBMoT+FFFL*HAwhBi&FUilKKB_nntqoy6|blJV0|y|-@80eslMXIy5^WS92>J|y=zPjI&=Ih&?<;%q^WUKrZxZX;7bbvwaW@sT zl?n@H4sv+1A$HQ?cxtDtuj^0XXU~Pg<`&;lZrIKog1weePGdP881LS8tHVKr%AGW2-f)rNw|JrDmIPQ!;WA5?ok2U8d|i zAXqBk=dFP+Ru))8tsxY~WCI3aIs`+8%m5A){SQ@>UV<*0$Pm;ta#~K%&Vhggg~J@4 z^O*ZyC)S8rdi@tbbjS(kXy9c7W=FbMA#lo+A!&Pv6(Fh)UQ(S???Q-(zm|DGdwpCl@#ovr{fk_*N1U5g+rL{wEp`ZbCTBod(H25*5voECr%tyB$yKsmfuVVI=D#o!!`-wWlp1>^~( zjp9ac%B=UOKfo)d8A8fAbdc{eM?Us$#m_%0-iXg#q36^@p8`;G9g7gL?*Ln|iQdL| zvlWurEdUc*5t5Fze4`R?#bq$FeB>a~eU`B~jetrujP5ukeiopRyNsJ4deVOq5xs&$ zeX**&VR8&AI24n7s$PjQhI{DTDkYf0p!z)h_771+l0?GmAGzk4g)q~ zArz{!uN|e?xTB)X>mT-uYS#0RsHj9f%qT}wj(u1_eN0R7@bxso=j~g$& z8rA?tAz|jIqB0UD>ii^8$GnrmioddIbH1p@=uYJvfI(z9-@3mId0`xbk3c3}y&=j? z47ew3AZLW$8cBo?u%Ps$+XC9>K_G``hI5pT`vMA$;Nop<{a4**AiSQX-FP~pV|?;@ ztS%=Zjlz6Y1PXVXIw9W#kY0qd*D&i5<6eHh&f)e*T`d~y0o8r4j1E@~(+@yV*j|sk$Pa%)a2)b>+C7gIfmyx+D|nabRjQU3AA_et980nb7i)kh%v;Gi zd=c>3C^M9k+&SY`8%4ZZb=^LwDg+yc3|sUMCa_0$bS@S2BqxuyT^j`|^W#HzzUCVq z=7DXtfLVUU-fPD`A)ZF%i8VEq7%rWlSlGf(h(go76MaOwp*zE1c;$c~L=mFqa0k;> z1M|y$%LdkfbKfyQ)6q7comi>-4nd`jmydzkzU%}VP^}18;?Nh?lk#X)DEmSSsr|&v zXN0e8tA)U&Ub=z=Ciuj4FSNm30f@@5&ro-tQ7TvRN7S5+K5@fSH_`s5{+MPs<94mL z_Fv53=fWys+$3a*oke%X)5ifUl!CVrbx<_pug!?UW0d=vMFm1>m+BPMZQlA;~#c#PGSZYT-e zy5_~-OM^wLYSOUGX4@Io%sXS#{q80a5-)S82t0LwYZc;Ovjb8yxxgks6K`Xp$}tlK zJX>i{n7+LoFue}w)h@Nz8!{$oB`PhDnF5bU9)$3fU3_5sOi#q&%84B%6%y52L2k@_ zNoNWRD(OjaQp+b_IX2cnO~gG`ZC})o{pAr?5DIQu#vJW5;39P*4{4bFRhVhw-?$+3 z>MCnmc=i@NU?Zk@#IL;<<{#>0-{%^$HV!kKY-Sc8N_?1d{h`X{h>p4qp%)B=sO7!` zdHA@R3gM!;veiPd_hJ4CVNc>??~|#~_Y#scIyYzW7Dzf=s|1h14KLJjEy7f_S0$>= zzJhsB)t966Gi_n(McLLX9%D6hNqjAL1&2g}sKTCbimJet8rgBuPSu!9tEaJXon0mI zbINI(JS?lB&7aSVQ5J96x`~_Ot-jC53b-ye4D2GgT!sHclz~!@k`5*{u7uX2Ntz$7 za%a%JVN+D!#PJ!=U~YN%zhsl3jIYrwmd%}9rJZnD=w~=@0v2Vu`rS>7m73Jvm%ZB z?#4$m)2KW!k^QQOaLZ#Y{rrhIgY8|Un1$xeo24pKnR88QqW>>hYe7=&D;#44)8389A z?QXh%|J{6bYbkEhL$pw4jWyr&#^#IjOnWca| z+98LXxdAvOM+GrjkXSd_;~B`sAqP-^BxT7+NL@@U%yF17`%+41t+E*_B!;q&7(aL0$dmI@N8U5jwuzoC>wX- zBUO!99->^L+KJ8^g_Sle*nGhz1Z_-{xKnZhEPQkndW6k&>WpvUtC(m5 zXz@1}5Lq4EM8t-KPR!z=Y#j^4^*8(Y3%87>SSJd8^aN1hZ#^fc`a&f67?~Kc@zUa= z!PtJ>X|_gycNUYd^<2wsjQR1I_2hd61=^#$2TQMiu(!G1-y_{h+!0DdI5)p|5Ar{7 ziG}O_Z5*>YjLPHq!4FQA4(m=&$agZ!n73CvhW`1i6M*EP!L?hGM)m5m+q)zIG*~Uk z<2Lvxnb8RgoMYg@N;>)QFhBxuHez@EDiX*D@gngNq!Wm zE`$Y;`CWbVSJ3Fn)pZnD!G~^@gLpZ#f&&B*)}wLFyUBLl5-Pnw--Ta!l9^@LH}p{A zJ=D|9B`724D^z6&Pyb|;m}~;b;g(#Aq-Xw?_Wj= z{lv_+5quh*lmc92f3`zL>^ z3(u)flMNfLwcWI>!u%hddM7WgH;}j?@Ese)^f?zOGdxYv z(nODCs+xCGNRL$RJY1grh=s?5xe?&f*IY8VPK)LM)Y($%EBHmiip%>|;9EPvutGGW zozRr9V|H&Drtudo-;L#3T`U$!*el>9 znS$nA32>E7P{_*BThwkyZXyJrm#J3oIf63qC6<8D8k?UaFznMyS$AmHv~B#lwiy4VA06y zs_4wh1u&B{E*VJ+;%(up=}l{}(?^>$3!->^9|>U!=pQKYx4A))`+|JErcEvS5uO$` z*7+);B797o)BA2bZkLAZjYa*c2}G5g&?t$0Hm=sQqT2RXJTI#qxSQ=TZXP##+P8{y z1qYOt)1(9g02hnsl?|!_Kiqin`CeUN{=*@Nl((m13BqP>^72R-2?L!XG{M*WNp(^$ z4C3EU;q%~TeA2E&wx~sFZqRK%b~mV|3crUe0U1}3+TGHacJnvZM8Uz<-ABFz!?R^( z5JS>X)D*t3a80fUVZwpEGVQXga~Q z$7T2qKdT2_$()kNNrgPwt~#I@4!Gq0Id2P}ga-xMeRuEMP1%^V<0n5tSE$Or_ZF&$ zouG*IapI{_VK3gXz7{Q`+c8V-+gP^y=;VF&QH28J4>e zso_lh&F$ACO|iPxo_&hWjP|2qADmhoR#&z*>;4o=blpr)Z{rD2-I-dr|5zc627>)x z@}ni`t_!Yn=qIm$(p`VYcufn3%uj4*DNebUh9p^`dGK{jSh6Yetxn6ct;)WVLu&Fv zwMzcVpAW%#6QUCK0Xj!l*sXQ_^~Z#vP;jB*rYRTeI?&svN~g06P0Q$@Vu2rk&~!WO z_P-U&ez3&hTZ$Q7b7*u%7(WHB4#k3RdN+5N3wpX270-}z$U8m|*xMR)C+Z;= zl?Nr9H$CkPn1VRQ+MkSr1d1*rRmrTa059!J3*M&Mm$!GE0eHT1hrqJ$S!FKGMjHF_ zSzm32!PD&Z;zFia7T zk{h6-drF;5Tfv;)} zotaypXOqt#OOu~HeG_kL$$=D^bv%=9$F7z+n;)q^lnNy6A6R>87p6&RV*~;fR+QTv6E& zy>Y<%esw9wBRJR#8rz|yuG`|{EfYb0sHtvfugzxSQ{5uq@$dApuA9PhIo-tZKcQZ|D*1~1HXh+4Rr;roRB$C?LzX_! zUnf*?z?Bs3B*nW#kAZ?u`6$-nlK=3+b#pB>C3QN<#kKdMVSKx&D6dFZNRQk3 zY(|e6tHdRTBioZ%j#qg$Fq1k5Bv6xqs7rT2)DV2kL)u7FSe_BCDIQae z0U^WP=I56s9h9tnJnf_t-N^y?pC%X=P)$Rl9d1jipm!|+%{ec^@zv;afv@%mO^U-Z zx87Hj9nOLHo9-t;0^Fut{@vWiIG@&CY1cpGNM5`mnv|h>)}7boSuFNrcJBE4qK_up z{R-*oXSU=xWeg&tNPWy~4!Omexxou?G7&5(#Hg==YWIx@gU_+&CD~?2REVUO&vqJp zx*xuSMQljUJRcXw=A(}#(@W!O-1%Xk{dDs4(w_s#j06cp8=H9hc0|QuclYF9i53$i z!)m7voH6~V!U*;|$cogMzyDC3vB@?mKurfxD2WIfLhti;whV8507$g!IkIlPNLfNR zft2}H((|cs)j_T`Q~y!fXROwuTwx3{RSz_~joMz;a>w1{jz!*-6O@ENhoEuUroj#dI^*$=&s9KzDtY{j` z98wcAd5}^E5g%E$G2(XCY(~*KrFv zTdv+4yqPVZZ%;o#Q8(`JB_xG-<;DcI3px3RhUT}yw-*^AOf?sqLF9l9=Q8;2$?u%Byte^}d{4!vaaE_No1{`AJuB(Qtw*7A3dznE6U z+yArG-X3~ok(py2cqGI3Xi56S2}1&^bwIwM{i6-0yipYawS>aRv%-lP;|$&>ElyC& z7zAy~6|Vf44;A3Dd4L>lF(_C^(Wv(`obp+WPs5^z@H0dVV|XmaF6f`L#?6ll^=oTxY==ufE-&b%e{hqOA!4%)4ND;@Lbc;Alsi})d2r0oA9W=| z-R`~!m^#T{gREo~c{>Q@?=!DtD*~?VlHK#y*1tOJeyVc5cI>dc;O%+eYuF^&u4~q^ zMysenk`dxCtP*y58{;aAdHnj#((WA4t9}Rpxy2h>Rdr*VHj-5d=HC7=FisJxlO*zO zUiVE7|6^J%mMsdv6{}$wKZ+0!XyY+)UYwtH(BsiZpBwD$7F&qHmyc_cHJN`kKiFWHUZPc6dYbQfp4PqiR3H9*G`0+gf4XH3+*(ZN)bT0=+>46y9doj zhX48R@kvNg;VMy*k{ewEn7 zaJGLtAU`4y>aOrLiT%xSdO(vJ3@_2#F8{Up{_6<-INWEC0OuZ)nekr(c>e8E$h;c^ zn)m%--7g4p-BKQj>liD{O%h9qXvxiemhG+bO!?U*Y?c_{N_MJ^}riU z{(hE%2Q&#_#_MS2ccTm@pf@1;?JR}pfd#1m>;xa-OpmlB|lEb*53yyZ5ee%ZcXi3q4qo|q-y~X z=+@ypwcpwLLJmL z@H!kx%_G@aiQ@Z~>|k&zYuFH>Wx*q5*9fFHmkH1=90G+=syRS4Bah7vN3@jzs%hn& zJoZgX)`KplqVrFXOOgT8vm{OomAKjnEr6xV zc4-!5wFbd|qw(nvp^*S<>glH%9>5;=rq})NZwdOsup*m2Xp^Ub2&+Y$;zL;=klTug z!8wgOTXIwDz^ub%Pu4cm+Iy`mUYlP_EP(A)2GUUmp+UxAff;%>Gpc8s3OH_!PU7K=Axw&?{+#=%(QPi`-uvMWQm$szDyehVxJMVU=H&oTlBp-vP% zdg|$v(rxT={ak(_9!@_cQ&f(zQ7}-#2}DY>K&+X;8nhwS#HmhIPHc>-e?mhk<}fuJ z-UUd^2QS>oo@Wx?4SfK7Nw=?4-`s%Ia*SmY^wF14rFCK$ixb`ljp$yIzFG~s`o#Gs zpD&wnyg7liF2WiNlA-D?d8+@A%)u?w{_A^*B1?Pq_|67q!M%pF>75*41pYL8%ibFh z<78$}M=RSqyFNT_V+8xB)~G8SHygmknFL6C0PJ7#eIc*~$eOCKGH7~V7S!4;JA(o= z2+PJ>cP>%+Bk`(&_l+amAlnXfk(pS8#6o4DINAtx0Tz^%%>{V%>MGyIKs;?L{{i-D zY==gwx|&i-LWjc^Am}T9JmsjY>Hv9+*FYhr01Tn7oywEziGh}d%bh*eG1T%)I@VUaEkp_vpJ@@}&0p#eIr(`2%=&ot`Kq#`;=C3VY z@67`B&Tdj-x9NufCYdNa^m+ENjAA4HJR-j}SPWM#O33dgp- zW;M8ey0dOrhPgJLO^>KU#s`+&HaiA$wZOMv?%f(l!ZUBTRXqo2_(pk!RboA>5-`t- zH9=4z4M3kE$Ktf#GW)sZ+w(iEg#T>GVvnsu&o#)R$680XfO~-3c(bGj=(75U<7BsPf zoihbyVCofg*;(gY>Vn8GbV9vu-EhM3tTc;bv${-CZTGCEOD9uFrECT&_6PmMSu{rT#r#`%U z7n%Z==CS_Kg!}6nzkL+f+mfogRiAwTfI%LbnN|ah4+m>PIyCz$HqbtD7r_n`aShU) zl9<3PXskpI3~XGVu-wRp2DhxG?sz^Oa>x0{iV1GnN4TGh1P$cVI9*a*5u{MN*)wdy z+d<_(Dq$QyX9sG^b=T>*e@!wdmYWg8vq)j8T}s#=x6ZR~P<6Lvs_jb<9N+r5rl5s5 zT$a^;?^!0q%6YbzRmWoMat(G;>R-Z=dTmcVu_8cX0u(>vPLT!io88+ZUgL)~v(AgB z?t7#o2g{uXovvU{`*2Wq%WkVGiM*gelV}JW9G((2YoeSF0vKm*ohmte2x=&xw;JEE z0$zg1Q?zwQGEz%{YYAr{o2_4zN^Jl9KyzTFWEyDYmfS~&X4%@^M}uQ#fjW)nh4_0W zYLWb_N$+io4BwP(wohuD151$0dwp)(%@wy#iYJZ0hQYn}G-)cwQHN`sx1(IF)Y*_O z)dPwv=NuV;E!C^?Ethv(w5+k++>oQk+xbbLK3`Iy=2%KzzW| za;lm%wuoiI4dqopF48Iy6QM)lau)w`)KN5auGfg7Img{L;-s>5Dinliw#wyjAsurZ z(_ITtgRv7a4R_1M!JFsMKIcU*T9)9!Owo_hm`=@_{lOCc369#rpiE7mB@VAY2i_1R zXi`Y{h_v@+TYCo|(>vG~Z0rJ1BvV4b0-Pa!KnoWR^tsyn%EDd z1VL?>%^My&99V+!(V=){?TEzI_lGyWKuLm;vk&Bo>hnJO6iV_|P!C4AtMrVaij{8Z zkAm~B%?~u;m}^Nk>2$1D!p%g}1dqDoryaYi1^HN4_5#X{?bRy%KNGaZ zRz6R7#T3H8rc8M{Vo=W8gD&6TGMU$A>@s=Ry~LwH9(%^H*O-Rjo<_KMfm-PcBMtQm zcjpx~5iMqCcOX`sf(EZo!ctY`-Efbe>-L83HN)ZA5g>gT!H%M1ul2KWZMHNvXYJeS z{nC4gS*BBb*aw#2L!B(i>nDMdd`XWTB-9?~3Rk}R*rt^0U~Df#Sx}T8JFP2E=CB$h z}@i|#x^3~`5`NMdNl2anq;ir7kq+e+v zf`&S20ZhC-xQ%A)?6b7+UxqNIdtzMX47Xi@3|Jx?GJ;iwN`+U9Sbt ze6~LN4k6fBiyR^qzyw$#kL-%c#~PzYO8MetIv+3pDh&U*lzbO~qV27;?KE8HxCKAZ zKqYC+70dMW7Hg6RDNGa*k^;6H8@UsdmEl{`n=A!n`C>4sfaE~uc}heB#zyGrNi(@A z7lA#_d;K)j1OpgF=p-^P7P&<`O1xVr2Bj)X!6B2Z=vtS|h_(kG%H*Faf(`*Ag`XgK zSv{}T2$Z5bP3=$%{}Bk^p@9_zv}tQ1u%y>9H8l1k`YymOj1G^W_%3pnZiX#!j>h;) zl0m@`@Cs0Mn#pfUwWAlT%>V}@cj|^yOoGELrFc_Sy!A&WXJ9_igCp5lVA~^O9VZy$ zWEGa5(&@$P<6s@f2MFn4TvvNAP;09u&kwxB1M&4m+_l3MQQg`X7RMKKscmkh0`{as zC2wt+;8QEa`eqUQ-~q0#RY6pYN~A^8ZfDRU7yI;Avh43Cwm4J&<=9dG#vQdza`oa2 zbcqx0n7N_=PE}K`XqVVR2DEJ69<4iU`FToGbl3b=UL_|>cyO~#=m_xu{ggaY1zEm> zXvJowT5qFBNq8j!w2=7jCEjQ=uqoS5+!FNx5<*4nbsjL{1fRqJRi$8w#9=uQ?dGTF zjZK%{<(H-d42Hb{xY#HFsGXaj(B*9kXdsr)@lD0c(j^5aFieqE=vaWPd^mh|aq{gA zhf;!df&d0{`9ikh6Y}-vqb1Dn;rsnyt<0?9RjM%GspKWabfwYMHYQ>YKdAEdQvD<& zZ6OnaZ|J{E8xz9-X3M`=aB5`3JpTU3?$A7gb85w2&$j$4>8$&@HFwZ){uJuJDx!Y> zD~-gT#$+(!2Df<>!%Y}vjfU}(mjK9m3n6^fQks83!fY(3l-9o1vp|6_gI-I@e0i~^ z4jd%|3;2Gboja>;#sRg*d~D5RJR|{wD5{{SGdLkFROt3-qOs<^erHF!%h+sT45|-r zSAcp0#@G@D7YsrkRh~QbEjL*o6y`)RI6Ifmtak6AXtj0at0GE=dIt+)&HT4U*=93$ z7X1tS^+l*|k&ZP)eMLB@fDyBAV%JS2B5+=@v^Vma>-DLF({%h&y_O5bhM8N3o3xE{ zG))s@!ztd828p{Zg)m2+#u6LpFM{12dHf;MW~fC(WeeC!POI66n8eQB9yxLzdiYoS z4%~r;0SkQo#F&jN$uDiI=7Y?p{ahN^vKjpb6pUgyqWr%Jdw&hav}2l^*OfBVcT~l# zIF+E-jZQVCksRc;g%lh$XyDXXagj_nD-Ta^8>*u|oBo~K-zZ=L2u@_%Ygq#r3PJOB z>&+~itLlaCYx}F zAdDITg7h_e2hJ+oDa*T0kyMY|P6TG>Kgij^sZ@7<$BIIOEHOZERtx{;zz_DaF4Ncl zssf)$UfDq-qGibH0vRd;Lp7)cZbmbrb)p#8^o)tK^LFr+_Cum^<6sK80@ze$a+Xc` zh!&_!Pu2N|eL@H%3s?vZpz1+~?S5~GSxfol&oiFb7P(A4`4FjQY=M%yECk>4?%`ra zz?TUuLt^ZTA;uBy$FetW#?!jGQjfHD=ov`~Dr2}z+aFBjv^vCe-cJ<65js%OCW008 zL<}2jEZl*{^1M>K;@Z2Kgy2Pf`NV#}deEq8eCQD{GL;Vko54IK?ipdcR`8r#6@3)x zUWWkBr8e;iaK*CiIwR3Cle@zeZu88`kUiEbAjvPW1sX=r-nBTlAkg8|j>|s==IWs; ztNPitTdv?~#Lgwqq;AmOMs6+9t1@@3hh)bYF z7^IL1MLbQaQ?xy7rtmN+--6o{BhW0r4d)K&zLKF=8M&4LN&d<-XhKOnyb1$b54YXs z1;z8?A)kRHBd;K}T+PM+lN)W+;i~Tl#b1S#qRBsv4;oI;zHL**h4brz*HR8ll14U& z8%ygyI(@di3wj&IXZ)$ie{0PL-Cu=@!W}E{ecK zF-*4jkZN~mLui6Ly4B`VPnjm-@2~cEbvune=Zda&8QE<6lrZd^-Jy4iO>sZ+4$62- zmgQQRpyOCVS!Xg6o|k(VZ z#klG9QwTfvVEKzJ`kj@|r0MrvCsvOJWNh!M@bQBAit=d%G5J|w6YiSd003tVs=`H$ zVAk=Ws;vR!n9r$mryWkx4%sx79|vlCtt$QC`msV#o&S@^X`>FxuEKP|K`etoEGZC)6v!1ujZ`F4OVN@NsH7+8;-Kwa_!z;%HE-a zN#cwT9$Aj9JT!Z5-(RGE&>BqcAk(Pk?iV?jL!OhdrXOYdwGvbnhn5`25T34_L+>fi zvaPeqmgT3|LKe(pip{-+dx|Ti_!S&_LJxbTg)1Vg%L>`;qetq-3-f}*<_#Gm>NB6>6w8**OUB#26FLx zc{UUG(gvmWz7Yp0t_c49)K5kC1WxHqJ+Ne*mGT&?SDd4iWj%fQCdUbfo>Lbc@L&|% z6~9r98DJDWg_^e7?j6#MQ#PSj1D&O6;a*joLV#@+N_|kpCEfGk^pFpjqV4fQ-5)e8 z=&5qpGz^nP>AGao+S(M*l2rn^e6ZgD36IJH8 z){=)h#w9!-G_6S1LkIS*Rwz2nvA`l*Qi{I~IoF}S)m7UN;Ty!*TDxX6IWFN55>(t@ zg?h~UCbJzu#4EX1!zMt(X z5luaSF?OL?jRbB&ouvh@m%)#{@usYuzr{6$(DcjB^1uj#nJ?`!^Z@QmeRMks<0?TR z=tpKFd1xOFgWNZli7!rW(8BA=gF$&>S7gDXZJzNO@beHT&C?%#HF`;inU9rwG)eU9 zZIkU#(eBVOP9-oYe5s>eVlb)bg@s=+>u$wxq_G5fh+n&5BMtnoAaWTt{{>`i`X9J{ zyM7ll7XMmJO-{>)fH}p(Ul^Fq;A?pPMenO|FfkW!O-RM4y|oU=t;nosp~C^YE~G@Pi;^T_`br5wi?<4I z|EWKC1c{z|f1dYxy-li2LEp=hdH`;lw@nB*`E^$qN}DO(G05u>FNMQOWiZ;KN-bYo z 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 literal 0 HcmV?d00001 diff --git a/readMe.md b/readMe.md index e96541f..1f6f511 100644 --- a/readMe.md +++ b/readMe.md @@ -47,6 +47,9 @@ - [Escape Sequences in string](#escape-sequences-in-string) - [Template Literals(Template Strings)](#template-literalstemplate-strings) - [String Methods](#string-methods) +- [💻 Day 2: Exercises](#%f0%9f%92%bb-day-2-exercises) + - [Exercises: String Part](#exercises-string-part) +- [📔 Day 3](#%f0%9f%93%94-day-3) - [Booleans](#booleans-1) - [Undefined](#undefined-1) - [Null](#null-1) @@ -58,13 +61,22 @@ - [Increment Operator](#increment-operator) - [Decrement Operator](#decrement-operator) - [Operator Precendence](#operator-precendence) -- [💻 Day 2: Exercises](#%f0%9f%92%bb-day-2-exercises) - - [Exercises: String Part](#exercises-string-part) + - [Date Object](#date-object) + - [Creating a time object](#creating-a-time-object) + - [Getting full year](#getting-full-year) + - [Getting month](#getting-month) + - [Getting date](#getting-date) + - [Getting hours](#getting-hours) + - [Getting minutes](#getting-minutes) + - [Getting seconds](#getting-seconds) + - [Getting time](#getting-time) +- [💻 Day 3: Exercises](#%f0%9f%92%bb-day-3-exercises) - [Exercises: Data types Part](#exercises-data-types-part) - [Exercises: Arithmetic Operators Part](#exercises-arithmetic-operators-part) - [Exercises: Booleans Part](#exercises-booleans-part) - [Exercises: Comparison Operators](#exercises-comparison-operators) - [Exercises: Logical Operators](#exercises-logical-operators) + - [Exercises: Date time Object](#exercises-date-time-object) # 📔Day 1 @@ -744,14 +756,17 @@ In JavaScript and other programming language \ followed by some characters is a * \\': Single quote (') * \\":Double quote (") ```js -console.log('I hope every one is enjoying the 30 Days Of JavaScript challenge.\nDo you ?') # line break +console.log('I hope every one is enjoying the 30 Days Of JavaScript challenge.\nDo you ?') // line break console.log('Days\tTopics\tExercises') console.log('Day 1\t3\t5') console.log('Day 2\t3\t5') console.log('Day 3\t3\t5') console.log('Day 4\t3\t5') -console.log('This is a back slash symbol (\\)') # To write a back slash -console.log('In every programming language it starts with \"Hello, World!\"') +console.log('This is a back slash symbol (\\)') // To write a back slash +console.log('In every programming language it starts with \"Hello, World!\"') +console.log("In every programming language it starts with \'Hello, World!\'") +console.log('The saying \'Seeing is Believing\' is\'t correct in 2020') + ``` #### Template Literals(Template Strings) To create a template string, we use two backticks. We can inject data as expression inside a template string. To inject data, we enclose the expression with a curly bracket({}) followed by a $ sign. See the syntax below. @@ -1070,6 +1085,54 @@ let string = 'love' console.log(string.repeat(10)) // lovelovelovelovelovelovelovelovelovelove ``` + + +# 💻 Day 2: Exercises +## Exercises: String Part + +1. Declare a variable name challenge and assign it to an initial value **'30 Days Of JavaScript'**. +2. Print the string on the browser console using __console.log()__ +3. Print the __length__ of the string on the browser console using _console.log()_ +4. Change all the string to capital letters using __toUpperCase()__ method +5. Change all the string to lowercase letters using __toLowerCase()__ method +6. Cut(slice) out the first word of the string using __substr()__ or __substring()__ method +7. Slice out the phrase *Days Of JavaScript* from *30 Days Of JavaScript*. +8. Use __substr__ to slice out the phase __because because because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ +9. Check if the string contains a word __Script__ using __includes()__ method +10. Split the __string__ into __array__ using __split()__ method +11. Split the string 30 Days Of JavaScript at the space using __split()__ method +12. 'Facebook, Google, Microsoft, Apple, IBM, Oracle, Amazon' __split__ the string at the comma and change it to an array. +13. Change 30 Days Of JavaScript to 30 Days Of Python using __replace()__ method. +14. What is character at index 15 in '30 Days Of JavaScript' string use __charAt()__ method. +15. What is the character code of J in '30 Days Of JavaScript' string using __charCodeAt()__ +16. Use __indexOf__ to determine the position of the first occurrence of a in 30 Days Of JavaScript +17. Use __lastIndexOf__ to determine the position of the last occurrence of a in 30 Days Of JavaScript. +18. Use __indexOf__ to find the position of the first occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ +19. Use __lastIndexOf__ to find the position of the first occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ +20. Use __search__ to find the position of the first occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ +21. Use __trim()__ to remove if there is trailing whitespace at the beginning and the end of a string.E.g ' 30 Days Of JavaScript '. +22. Use __startsWith()__ method with the string *30 Days Of JavaScript* make the result true +23. Use __endsWith()__ method with the string *30 Days Of JavaScript* make the result true +24. Use __match()__ method to find all the a’s in 30 Days Of JavaScript +25. Use __match()__ to count the number all because's in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ +26. Use __concat()__ and merge '30 Days of' and 'JavaScript' to a single string, '30 Days Of JavaScript' +27. Use __repeat()__ method to print 30 Days Of JavaScript 2 times +28. Love is the best thing in this world. Some found their love and some are still looking for their love. Count the number of word love in this sentence. +29. Calculate the total annual income of the person by extract the numbers from the following text. 'He earns 5000 euro from salary per month, 10000 euro annual bonus, 15000 euro online courses per month.' +30. Clean the following text and find the most frequent word(hint, use replace and regular express). +```js + const sentence = '%I $am@% a %tea@cher%, &and& I lo%#ve %tea@ching%;. There $is nothing; &as& mo@re rewarding as educa@ting &and& @emp%o@wering peo@ple. ;I found tea@ching m%o@re interesting tha@n any other %jo@bs. %Do@es thi%s mo@tivate yo@u to be a tea@cher!? %Th#is 30#Days&OfJavaScript &is also $the $result of &love& of tea&ching' +``` +31. Using console.log() print out the following statement. + ```sh + The quote 'There is no exercise better for the heart than reaching down and lifting people up.' by John Holmes teaches us to help to one another. + ``` +32. Using console.log() print out the following quote by Mother Teresa. +```sh +"Love is not patronizing and charity isn't about pity, it is about love. Charity and love are the same -- with charity you give love, so don't just give money but reach out your hand instead." +``` + +# 📔 Day 3 ## Booleans A boolean data type represents one of the two values:_true_ or _false_. Boolean value is either true or false. The use of these data types will be clear when you start the comparison operator. Any comparisons return a boolean value which is either true or false. @@ -1242,42 +1305,82 @@ console.log(count) // -1 ### Operator Precendence I would like to recommend you to read about operator precendence from this [link](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence) -# 💻 Day 2: Exercises -## Exercises: String Part +## Date Object +Time is an important thing. We like to know the time a certain activity or event. In JavaScript current time and date is created using JavaScript Date Object. The object we create using Date object provides many methods to work with date and time.The methods we use to get date and time information from a date object values are started with a word _get_ because it provide the information. +_getFullYear(), getMonths(), getDate(), getDay(), getHours(), getMinutes, getSeconds(), getMilliseconds(), getTime(), getDay()_ -1. Declare a variable name challenge and assign it to an initial value **'30 Days Of JavaScript'**. -2. Print the string on the browser console using __console.log()__ -3. Print the __length__ of the string on the browser console using _console.log()_ -4. Change all the string to capital letters using __toUpperCase()__ method -5. Change all the string to lowercase letters using __toLowerCase()__ method -6. Cut(slice) out the first word of the string using __substr()__ or __substring()__ method -7. Slice out the phrase *Days Of JavaScript* from *30 Days Of JavaScript*. -8. Use __substr__ to slice out the phase __because because because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ -9. Check if the string contains a word __Script__ using __includes()__ method -10. Split the __string__ into __array__ using __split()__ method -11. Split the string 30 Days Of JavaScript at the space using __split()__ method -12. 'Facebook, Google, Microsoft, Apple, IBM, Oracle, Amazon' __split__ the string at the comma and change it to an array. -13. Change 30 Days Of JavaScript to 30 Days Of Python using __replace()__ method. -14. What is character at index 15 in '30 Days Of JavaScript' string use __charAt()__ method. -15. What is the character code of J in '30 Days Of JavaScript' string using __charCodeAt()__ -16. Use __indexOf__ to determine the position of the first occurrence of a in 30 Days Of JavaScript -17. Use __lastIndexOf__ to determine the position of the last occurrence of a in 30 Days Of JavaScript. -18. Use __indexOf__ to find the position of the first occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ -19. Use __lastIndexOf__ to find the position of the first occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ -20. Use __search__ to find the position of the first occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ -21. Use __trim()__ to remove if there is trailing whitespace at the beginning and the end of a string.E.g ' 30 Days Of JavaScript '. -22. Use __startsWith()__ method with the string *30 Days Of JavaScript* make the result true -23. Use __endsWith()__ method with the string *30 Days Of JavaScript* make the result true -24. Use __match()__ method to find all the a’s in 30 Days Of JavaScript -25. Use __match()__ to count the number all because's in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ -26. Use __concat()__ and merge '30 Days of' and 'JavaScript' to a single string, '30 Days Of JavaScript' -27. Use __repeat()__ method to print 30 Days Of JavaScript 2 times -28. Love is the best thing in this world. Some found their love and some are still looking for their love. Count the number of word love in this sentence. -29. Calculate the total annual income of the person by extract the numbers from the following text. 'He earns 5000 euro from salary per month, 10000 euro annual bonus, 15000 euro online courses per month.' -30. Clean the following text and find the most frequent word(hint, use replace and regular express). +![Date time Object](images/date_time_object.png) +### Creating a time object +Once we create time object. The time object will provide information about time. Let us create a time object ```js - const sentence = '%I $am@% a %tea@cher%, &and& I lo%#ve %tea@ching%;. There $is nothing; &as& mo@re rewarding as educa@ting &and& @emp%o@wering peo@ple. ;I found tea@ching m%o@re interesting tha@n any other %jo@bs. %Do@es thi%s mo@tivate yo@u to be a tea@cher!? %Th#is 30#Days&OfJavaScript &is also $the $result of &love& of tea&ching' +const now = new Date () // +console.log(now) // Sat Jan 04 2020 00:56:41 GMT+0200 (Eastern European Standard Time) ``` +We have created a time object and we can access any date time information from the object using the get methods we have mentioned on the table. +### Getting full year +Let's extract or get the full from a time object. +```js +const now = new Date () // +console.log(now.getFullYear()) // 2020 +``` +### Getting month +Let's extract or get the month from a time object. +```js +const now = new Date () // +console.log(now.getMonth()) // 0, because the month is January, month(0-11) +``` +### Getting date +Let's extract or get the date of the month from a time object. +```js +const now = new Date () // +console.log(now.getMonth()) // 0, because the month is January, month(0-11) +``` +### Getting hours +Let's extract or get the hours from a time object. +```js +const now = new Date () // +console.log(now.getHours()) // 0, because the time is 00:56:41 +``` +### Getting minutes +Let's extract or get the minutes from a time object. +```js +const now = new Date () // +console.log(now.getMinutes()) // 56, because the time is 00:56:41 +``` +### Getting seconds +Let's extract or get the minutes from a time object. +```js +const now = new Date () // +console.log(now.getMinutes()) // 56, because the time is 00:56:41 +``` +### Getting time +This method give time in milliseconds starting from January 1, 1970. It is also know as Unix time. We can get the unix time in two ways: +1. Using *getTime()* +```js +const now = new Date () // +console.log(now.getTime()) // 1578092201341, this is the number of seconds passed from January 1, 1970 to January 4, 2020 00:56:41 +``` +2. Using *Date.now()* +```js +const allSeconds = Date.now () // +console.log(allSeconds) // 1578092201341, this is the number of seconds passed from January 1, 1970 to January 4, 2020 00:56:41 +const timeInSeconds = new Date ().getTime() +console.log(allSeconds == timeInSeconds) // true +``` +Let us format these values to a human readable time format. +**Example:** +```js + +const now = new Date (); +const year = now.getFullYear(); // return year +const month = now.getMonth() + 1; // return month(0 - 11) +const date = now.getDate(); // return date (1 - 31) +const hours = now.getHours(); // return number (0 - 23) +const minutes = now.getMinutes();// return number (0 -59) +console.log(`${date}/${month}/${year} ${hours}:${minutes}`) // 4/1/2020 0:56 +``` + +# 💻 Day 3: Exercises ## Exercises: Data types Part 1. Declare firstName, lastName, country, city, age, isMarried, year variable and assign value to it @@ -1327,7 +1430,18 @@ Figure out the result of the following expressions first without using console.l 1. !(4 > 3 && 10 < 12) 1. !(4 > 3 && 10 > 12) 1. !(4 === '4') - +## Exercises: Date time Object +1. What is the year today? +1. What is the month today? +1. What is the date today? +1. What is the day today? +1. What is the hours now? +1. What is the minutes now? +1. Find out the numbers of seconds elapsed from January 1, 1970 to now. +1. Create a human readable time format + 1. YYY-MM-DD HH:mm:ss + 2. DD-MM-YYYY HH:mm:ss + 3. DD/MM/YYY HH:mm:ss From ce6b9fc96d4dbeb116c7673a4253b5243bf6eaa5 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 02:04:10 +0200 Subject: [PATCH 03/31] day 3 --- readMe.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/readMe.md b/readMe.md index 1f6f511..03f91a9 100644 --- a/readMe.md +++ b/readMe.md @@ -71,12 +71,12 @@ - [Getting seconds](#getting-seconds) - [Getting time](#getting-time) - [💻 Day 3: Exercises](#%f0%9f%92%bb-day-3-exercises) - - [Exercises: Data types Part](#exercises-data-types-part) - - [Exercises: Arithmetic Operators Part](#exercises-arithmetic-operators-part) - - [Exercises: Booleans Part](#exercises-booleans-part) - - [Exercises: Comparison Operators](#exercises-comparison-operators) - - [Exercises: Logical Operators](#exercises-logical-operators) - - [Exercises: Date time Object](#exercises-date-time-object) + - [1. Exercises: Data types Part](#1-exercises-data-types-part) + - [2. Exercises: Arithmetic Operators Part](#2-exercises-arithmetic-operators-part) + - [3. Exercises: Booleans Part](#3-exercises-booleans-part) + - [4. Exercises: Comparison Operators](#4-exercises-comparison-operators) + - [5. Exercises: Logical Operators](#5-exercises-logical-operators) + - [6. Exercises: Date time Object](#6-exercises-date-time-object) # 📔Day 1 @@ -1381,12 +1381,12 @@ console.log(`${date}/${month}/${year} ${hours}:${minutes}`) // 4/1/2020 0:56 ``` # 💻 Day 3: Exercises -## Exercises: Data types Part +## 1. Exercises: Data types Part 1. Declare firstName, lastName, country, city, age, isMarried, year variable and assign value to it 1. The JavaScript typeof operator uses to check different data types. Check the data type of each variables from question number 1. -## Exercises: Arithmetic Operators Part +## 2. Exercises: Arithmetic Operators Part JavaScript arithmetic operators are addition(+), subtraction(-), multiplication(*), division(/), modulus(%), exponential(**), increment(++) and decrement(--). ```js @@ -1395,14 +1395,14 @@ let operandTwo = 3; ``` Using the above operands apply different JavaScript arithmetic operations. -## Exercises: Booleans Part +## 3. Exercises: Booleans Part Boolean value is either true or false. 1. Write three JavaScript statement which provide truthy value. 1. Write three JavaScript statement which provide falsy value. -## Exercises: Comparison Operators +## 4. Exercises: Comparison Operators Figure out the result of the following comparison expression first without using console.log(). After you decide the result confirm it using console.log() @@ -1418,7 +1418,7 @@ Figure out the result of the following comparison expression first without using 1. 4 == '4' 1. 4 === '4' -## Exercises: Logical Operators +## 5. Exercises: Logical Operators Figure out the result of the following expressions first without using console.log(). After you decide the result confirm it by using console.log() 1. 4 > 3 && 10 < 12 1. 4 > 3 && 10 > 12 @@ -1430,7 +1430,7 @@ Figure out the result of the following expressions first without using console.l 1. !(4 > 3 && 10 < 12) 1. !(4 > 3 && 10 > 12) 1. !(4 === '4') -## Exercises: Date time Object +## 6. Exercises: Date time Object 1. What is the year today? 1. What is the month today? 1. What is the date today? @@ -1439,9 +1439,9 @@ Figure out the result of the following expressions first without using console.l 1. What is the minutes now? 1. Find out the numbers of seconds elapsed from January 1, 1970 to now. 1. Create a human readable time format - 1. YYY-MM-DD HH:mm:ss - 2. DD-MM-YYYY HH:mm:ss - 3. DD/MM/YYY HH:mm:ss + 1. YYY-MM-DD HH:mm:ss + 2. DD-MM-YYYY HH:mm:ss + 3. DD/MM/YYY HH:mm:ss From 11842f4261b2682cb818d87400927c00d0f61cb7 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 04:49:25 +0200 Subject: [PATCH 04/31] Fixing error --- readMe.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readMe.md b/readMe.md index 03f91a9..c89f9a2 100644 --- a/readMe.md +++ b/readMe.md @@ -1107,7 +1107,7 @@ console.log(string.repeat(10)) // lovelovelovelovelovelovelovelovelovelove 15. What is the character code of J in '30 Days Of JavaScript' string using __charCodeAt()__ 16. Use __indexOf__ to determine the position of the first occurrence of a in 30 Days Of JavaScript 17. Use __lastIndexOf__ to determine the position of the last occurrence of a in 30 Days Of JavaScript. -18. Use __indexOf__ to find the position of the first occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ +18. Use __indexOf__ to find the position of the last occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ 19. Use __lastIndexOf__ to find the position of the first occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ 20. Use __search__ to find the position of the first occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ 21. Use __trim()__ to remove if there is trailing whitespace at the beginning and the end of a string.E.g ' 30 Days Of JavaScript '. From 20cdf019c5b30d739b3a0b2b28e2eb359ecd1556 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 04:51:50 +0200 Subject: [PATCH 05/31] Fixing errors --- readMe.md | 265 +----------------------------------------------------- 1 file changed, 3 insertions(+), 262 deletions(-) diff --git a/readMe.md b/readMe.md index c89f9a2..f510e97 100644 --- a/readMe.md +++ b/readMe.md @@ -1107,8 +1107,8 @@ console.log(string.repeat(10)) // lovelovelovelovelovelovelovelovelovelove 15. What is the character code of J in '30 Days Of JavaScript' string using __charCodeAt()__ 16. Use __indexOf__ to determine the position of the first occurrence of a in 30 Days Of JavaScript 17. Use __lastIndexOf__ to determine the position of the last occurrence of a in 30 Days Of JavaScript. -18. Use __indexOf__ to find the position of the last occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ -19. Use __lastIndexOf__ to find the position of the first occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ +18. Use __indexOf__ to find the position of the first occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ +19. Use __lastIndexOf__ to find the position of the last occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ 20. Use __search__ to find the position of the first occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ 21. Use __trim()__ to remove if there is trailing whitespace at the beginning and the end of a string.E.g ' 30 Days Of JavaScript '. 22. Use __startsWith()__ method with the string *30 Days Of JavaScript* make the result true @@ -1185,263 +1185,4 @@ Arithmetic operators are mathematical operators. ```js let numOne = 4; let numTwo = 3; -let sum = numOne + numTwo; -let diff = numOne - numTwo; -let mult = numOne * numTwo; -let div = numOne / numTwo; -let remainder = numOne % numTwo; -let powerOf = numOne ** numTwo -console.log(sum, diff, mult, div, remainder, powerOf); // ->7,1,12,1.33,1, 64 - -let PI = 3.14; -let radius = 100; // length in meter - -const gravity = 9.81; // in m/s2 -let mass = 72; // in Kilogram -const boilingPoint = 100; // temperature in oC, boiling point of water -const bodyTemp = 37; // body temperature in oC - -//Let us calculate area of a circle -const areaOfCircle = PI * radius * radius; -console.log(areaOfCircle); // -> 314 m -// Let us calculate weight of an object -const weight = mass * gravity; -console.log(weight); // -> 706.32 N(Newton) - -//Concatenating string with numbers using string interpolation -/* - The boiling point of water is 100 oC. - Human body temperature is 37 oC. - The gravity of earth is 9.81 m/s2. - */ -console.log( - `The boiling point of water is ${boilingPoint} oC.\nHuman body temperature is ${bodyTemp} oC.\nThe gravity of earth is ${gravity} m / s2.` -); -``` -### Comparison Operators - -In programming we compare values, we use comparison operators to compare two values. We check if a value is greater or less or equal to other value. - -![Comparison Operators](./images/comparison_operators.png) -**Example: Comparison Operators** - -```js -console.log(3 > 2) // true, because 3 is greater than 2 -console.log(3 >= 2) // true, because 3 is greater than 2 -console.log(3 < 2) // false, because 3 is greater than 2 -console.log(2 < 3) // true, because 2 is less than 3 -console.log(2 <= 3) // true, because 2 is less than 3 -console.log(3 == 2) // false, because 3 is not equal to 2 -console.log(3 != 2) // true, because 3 is not equal to 2 -console.log(3 == '3') // true, compare only value -console.log(3 === '3') // false, compare both value and data type -console.log(3 !== '3') // true, compare both value and data type -console.log(3 !== '3') // true, compare both value and data type -console.log(3 != 3) // false, compare only value -console.log(3 !== 3) // false, compare both value and data type - -console.log('mango'.length == 'avocado'.length) // false -console.log('mango'.length != 'avocado'.length) // true -console.log('mango'.length < 'avocado'.length) // true -console.log('milk'.length != 'meat'.length) // false -console.log('milk'.length == 'meat'.length) // true -console.log('tomato'.length == 'potato'.length) // true -console.log('python'.length > 'dragon'.length) // false -``` - -### Logical Operators - -The following symbols are the common logical operators: -&&(ampersand) , ||(pipe) and !(negation). -&& gets true only if the two operands are true. -|| gets true either of the operand is true. -! negates true to false, false to true. - -```js -//&& ampersand example -const check = 4 > 3 && 10 > 5; // true and true -> true -const check = 4 > 3 && 10 < 5; // true and false -> false -const check = 4 < 3 && 10 < 5; // false and false -> false -//|| pipe or, example -const check = 4 > 3 || 10 > 5; // true and true -> true -const check = 4 > 3 || 10 < 5; // true and false -> true -const check = 4 < 3 || 10 < 5; // false and false -> false -//! Negation examples -let check = 4 > 3; // -> true -let check = !(4 > 3); // -> false -let isLightOn = true; -let isLightOff = !isLightOn; // -> false -let isMarried = !false; // -> true -``` -### Increment Operator -In JavaScrip we use the increment operator to increase a value stored in a variable. The increment could be pre or post increment. Let us see each of them: -1. Pre-increment -```js -let count = 0 -console.log(++count) // 1 -console.log(count) // 1 -``` -2. Post-increment -```js -let count = 0 -console.log(count++) // 0 -console.log(count) // 1 -``` -We use most of the time post-increment. At leas you should remember how to use post-increment operator. -### Decrement Operator -In JavaScrip we use the decrement operator to decrease a value stored in a variable. The decrement could be pre or post decrement. Let us see each of them: -1. Pre-decrement -```js -let count = 0 -console.log(--count) // -1 -console.log(count) // -1 -``` -2. Post-decrement -```js -let count = 0 -console.log(count--) // 0 -console.log(count) // -1 -``` -### Operator Precendence -I would like to recommend you to read about operator precendence from this [link](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence) - -## Date Object -Time is an important thing. We like to know the time a certain activity or event. In JavaScript current time and date is created using JavaScript Date Object. The object we create using Date object provides many methods to work with date and time.The methods we use to get date and time information from a date object values are started with a word _get_ because it provide the information. -_getFullYear(), getMonths(), getDate(), getDay(), getHours(), getMinutes, getSeconds(), getMilliseconds(), getTime(), getDay()_ - -![Date time Object](images/date_time_object.png) -### Creating a time object -Once we create time object. The time object will provide information about time. Let us create a time object -```js -const now = new Date () // -console.log(now) // Sat Jan 04 2020 00:56:41 GMT+0200 (Eastern European Standard Time) -``` -We have created a time object and we can access any date time information from the object using the get methods we have mentioned on the table. -### Getting full year -Let's extract or get the full from a time object. -```js -const now = new Date () // -console.log(now.getFullYear()) // 2020 -``` -### Getting month -Let's extract or get the month from a time object. -```js -const now = new Date () // -console.log(now.getMonth()) // 0, because the month is January, month(0-11) -``` -### Getting date -Let's extract or get the date of the month from a time object. -```js -const now = new Date () // -console.log(now.getMonth()) // 0, because the month is January, month(0-11) -``` -### Getting hours -Let's extract or get the hours from a time object. -```js -const now = new Date () // -console.log(now.getHours()) // 0, because the time is 00:56:41 -``` -### Getting minutes -Let's extract or get the minutes from a time object. -```js -const now = new Date () // -console.log(now.getMinutes()) // 56, because the time is 00:56:41 -``` -### Getting seconds -Let's extract or get the minutes from a time object. -```js -const now = new Date () // -console.log(now.getMinutes()) // 56, because the time is 00:56:41 -``` -### Getting time -This method give time in milliseconds starting from January 1, 1970. It is also know as Unix time. We can get the unix time in two ways: -1. Using *getTime()* -```js -const now = new Date () // -console.log(now.getTime()) // 1578092201341, this is the number of seconds passed from January 1, 1970 to January 4, 2020 00:56:41 -``` -2. Using *Date.now()* -```js -const allSeconds = Date.now () // -console.log(allSeconds) // 1578092201341, this is the number of seconds passed from January 1, 1970 to January 4, 2020 00:56:41 -const timeInSeconds = new Date ().getTime() -console.log(allSeconds == timeInSeconds) // true -``` -Let us format these values to a human readable time format. -**Example:** -```js - -const now = new Date (); -const year = now.getFullYear(); // return year -const month = now.getMonth() + 1; // return month(0 - 11) -const date = now.getDate(); // return date (1 - 31) -const hours = now.getHours(); // return number (0 - 23) -const minutes = now.getMinutes();// return number (0 -59) -console.log(`${date}/${month}/${year} ${hours}:${minutes}`) // 4/1/2020 0:56 -``` - -# 💻 Day 3: Exercises -## 1. Exercises: Data types Part -1. Declare firstName, lastName, country, city, age, isMarried, year variable and assign value to it - -1. The JavaScript typeof operator uses to check different data types. Check the data type of each variables from question number 1. - -## 2. Exercises: Arithmetic Operators Part -JavaScript arithmetic operators are addition(+), subtraction(-), multiplication(*), division(/), modulus(%), exponential(**), increment(++) and decrement(--). - -```js -let operandOne = 4; -let operandTwo = 3; -``` -Using the above operands apply different JavaScript arithmetic operations. - -## 3. Exercises: Booleans Part - -Boolean value is either true or false. - -1. Write three JavaScript statement which provide truthy value. -1. Write three JavaScript statement which provide falsy value. - -## 4. Exercises: Comparison Operators - -Figure out the result of the following comparison expression first without using console.log(). After you decide the result confirm it using console.log() - -1. 4 > 3 -1. 4 >= 3 -1. 4 < 3 -1. 4 <= 3 -1. 4 == 4 -1. 4 === 4 -1. 4 != 4 -1. 4 !== 4 -1. 4 != '4' -1. 4 == '4' -1. 4 === '4' - -## 5. Exercises: Logical Operators -Figure out the result of the following expressions first without using console.log(). After you decide the result confirm it by using console.log() -1. 4 > 3 && 10 < 12 -1. 4 > 3 && 10 > 12 -1. 4 > 3 || 10 < 12 -1. 4 > 3 || 10 > 12 -1. !(4 > 3) -1. !(4 < 3) -1. !(false) -1. !(4 > 3 && 10 < 12) -1. !(4 > 3 && 10 > 12) -1. !(4 === '4') -## 6. Exercises: Date time Object -1. What is the year today? -1. What is the month today? -1. What is the date today? -1. What is the day today? -1. What is the hours now? -1. What is the minutes now? -1. Find out the numbers of seconds elapsed from January 1, 1970 to now. -1. Create a human readable time format - 1. YYY-MM-DD HH:mm:ss - 2. DD-MM-YYYY HH:mm:ss - 3. DD/MM/YYY HH:mm:ss - - - +let sum From 48ab0c09bbf7793cac7c7f135a0551a056bd5b55 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 04:59:24 +0200 Subject: [PATCH 06/31] fixing errors --- readMe.md | 263 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 261 insertions(+), 2 deletions(-) diff --git a/readMe.md b/readMe.md index f510e97..03f91a9 100644 --- a/readMe.md +++ b/readMe.md @@ -1108,7 +1108,7 @@ console.log(string.repeat(10)) // lovelovelovelovelovelovelovelovelovelove 16. Use __indexOf__ to determine the position of the first occurrence of a in 30 Days Of JavaScript 17. Use __lastIndexOf__ to determine the position of the last occurrence of a in 30 Days Of JavaScript. 18. Use __indexOf__ to find the position of the first occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ -19. Use __lastIndexOf__ to find the position of the last occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ +19. Use __lastIndexOf__ to find the position of the first occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ 20. Use __search__ to find the position of the first occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ 21. Use __trim()__ to remove if there is trailing whitespace at the beginning and the end of a string.E.g ' 30 Days Of JavaScript '. 22. Use __startsWith()__ method with the string *30 Days Of JavaScript* make the result true @@ -1185,4 +1185,263 @@ Arithmetic operators are mathematical operators. ```js let numOne = 4; let numTwo = 3; -let sum +let sum = numOne + numTwo; +let diff = numOne - numTwo; +let mult = numOne * numTwo; +let div = numOne / numTwo; +let remainder = numOne % numTwo; +let powerOf = numOne ** numTwo +console.log(sum, diff, mult, div, remainder, powerOf); // ->7,1,12,1.33,1, 64 + +let PI = 3.14; +let radius = 100; // length in meter + +const gravity = 9.81; // in m/s2 +let mass = 72; // in Kilogram +const boilingPoint = 100; // temperature in oC, boiling point of water +const bodyTemp = 37; // body temperature in oC + +//Let us calculate area of a circle +const areaOfCircle = PI * radius * radius; +console.log(areaOfCircle); // -> 314 m +// Let us calculate weight of an object +const weight = mass * gravity; +console.log(weight); // -> 706.32 N(Newton) + +//Concatenating string with numbers using string interpolation +/* + The boiling point of water is 100 oC. + Human body temperature is 37 oC. + The gravity of earth is 9.81 m/s2. + */ +console.log( + `The boiling point of water is ${boilingPoint} oC.\nHuman body temperature is ${bodyTemp} oC.\nThe gravity of earth is ${gravity} m / s2.` +); +``` +### Comparison Operators + +In programming we compare values, we use comparison operators to compare two values. We check if a value is greater or less or equal to other value. + +![Comparison Operators](./images/comparison_operators.png) +**Example: Comparison Operators** + +```js +console.log(3 > 2) // true, because 3 is greater than 2 +console.log(3 >= 2) // true, because 3 is greater than 2 +console.log(3 < 2) // false, because 3 is greater than 2 +console.log(2 < 3) // true, because 2 is less than 3 +console.log(2 <= 3) // true, because 2 is less than 3 +console.log(3 == 2) // false, because 3 is not equal to 2 +console.log(3 != 2) // true, because 3 is not equal to 2 +console.log(3 == '3') // true, compare only value +console.log(3 === '3') // false, compare both value and data type +console.log(3 !== '3') // true, compare both value and data type +console.log(3 !== '3') // true, compare both value and data type +console.log(3 != 3) // false, compare only value +console.log(3 !== 3) // false, compare both value and data type + +console.log('mango'.length == 'avocado'.length) // false +console.log('mango'.length != 'avocado'.length) // true +console.log('mango'.length < 'avocado'.length) // true +console.log('milk'.length != 'meat'.length) // false +console.log('milk'.length == 'meat'.length) // true +console.log('tomato'.length == 'potato'.length) // true +console.log('python'.length > 'dragon'.length) // false +``` + +### Logical Operators + +The following symbols are the common logical operators: +&&(ampersand) , ||(pipe) and !(negation). +&& gets true only if the two operands are true. +|| gets true either of the operand is true. +! negates true to false, false to true. + +```js +//&& ampersand example +const check = 4 > 3 && 10 > 5; // true and true -> true +const check = 4 > 3 && 10 < 5; // true and false -> false +const check = 4 < 3 && 10 < 5; // false and false -> false +//|| pipe or, example +const check = 4 > 3 || 10 > 5; // true and true -> true +const check = 4 > 3 || 10 < 5; // true and false -> true +const check = 4 < 3 || 10 < 5; // false and false -> false +//! Negation examples +let check = 4 > 3; // -> true +let check = !(4 > 3); // -> false +let isLightOn = true; +let isLightOff = !isLightOn; // -> false +let isMarried = !false; // -> true +``` +### Increment Operator +In JavaScrip we use the increment operator to increase a value stored in a variable. The increment could be pre or post increment. Let us see each of them: +1. Pre-increment +```js +let count = 0 +console.log(++count) // 1 +console.log(count) // 1 +``` +2. Post-increment +```js +let count = 0 +console.log(count++) // 0 +console.log(count) // 1 +``` +We use most of the time post-increment. At leas you should remember how to use post-increment operator. +### Decrement Operator +In JavaScrip we use the decrement operator to decrease a value stored in a variable. The decrement could be pre or post decrement. Let us see each of them: +1. Pre-decrement +```js +let count = 0 +console.log(--count) // -1 +console.log(count) // -1 +``` +2. Post-decrement +```js +let count = 0 +console.log(count--) // 0 +console.log(count) // -1 +``` +### Operator Precendence +I would like to recommend you to read about operator precendence from this [link](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence) + +## Date Object +Time is an important thing. We like to know the time a certain activity or event. In JavaScript current time and date is created using JavaScript Date Object. The object we create using Date object provides many methods to work with date and time.The methods we use to get date and time information from a date object values are started with a word _get_ because it provide the information. +_getFullYear(), getMonths(), getDate(), getDay(), getHours(), getMinutes, getSeconds(), getMilliseconds(), getTime(), getDay()_ + +![Date time Object](images/date_time_object.png) +### Creating a time object +Once we create time object. The time object will provide information about time. Let us create a time object +```js +const now = new Date () // +console.log(now) // Sat Jan 04 2020 00:56:41 GMT+0200 (Eastern European Standard Time) +``` +We have created a time object and we can access any date time information from the object using the get methods we have mentioned on the table. +### Getting full year +Let's extract or get the full from a time object. +```js +const now = new Date () // +console.log(now.getFullYear()) // 2020 +``` +### Getting month +Let's extract or get the month from a time object. +```js +const now = new Date () // +console.log(now.getMonth()) // 0, because the month is January, month(0-11) +``` +### Getting date +Let's extract or get the date of the month from a time object. +```js +const now = new Date () // +console.log(now.getMonth()) // 0, because the month is January, month(0-11) +``` +### Getting hours +Let's extract or get the hours from a time object. +```js +const now = new Date () // +console.log(now.getHours()) // 0, because the time is 00:56:41 +``` +### Getting minutes +Let's extract or get the minutes from a time object. +```js +const now = new Date () // +console.log(now.getMinutes()) // 56, because the time is 00:56:41 +``` +### Getting seconds +Let's extract or get the minutes from a time object. +```js +const now = new Date () // +console.log(now.getMinutes()) // 56, because the time is 00:56:41 +``` +### Getting time +This method give time in milliseconds starting from January 1, 1970. It is also know as Unix time. We can get the unix time in two ways: +1. Using *getTime()* +```js +const now = new Date () // +console.log(now.getTime()) // 1578092201341, this is the number of seconds passed from January 1, 1970 to January 4, 2020 00:56:41 +``` +2. Using *Date.now()* +```js +const allSeconds = Date.now () // +console.log(allSeconds) // 1578092201341, this is the number of seconds passed from January 1, 1970 to January 4, 2020 00:56:41 +const timeInSeconds = new Date ().getTime() +console.log(allSeconds == timeInSeconds) // true +``` +Let us format these values to a human readable time format. +**Example:** +```js + +const now = new Date (); +const year = now.getFullYear(); // return year +const month = now.getMonth() + 1; // return month(0 - 11) +const date = now.getDate(); // return date (1 - 31) +const hours = now.getHours(); // return number (0 - 23) +const minutes = now.getMinutes();// return number (0 -59) +console.log(`${date}/${month}/${year} ${hours}:${minutes}`) // 4/1/2020 0:56 +``` + +# 💻 Day 3: Exercises +## 1. Exercises: Data types Part +1. Declare firstName, lastName, country, city, age, isMarried, year variable and assign value to it + +1. The JavaScript typeof operator uses to check different data types. Check the data type of each variables from question number 1. + +## 2. Exercises: Arithmetic Operators Part +JavaScript arithmetic operators are addition(+), subtraction(-), multiplication(*), division(/), modulus(%), exponential(**), increment(++) and decrement(--). + +```js +let operandOne = 4; +let operandTwo = 3; +``` +Using the above operands apply different JavaScript arithmetic operations. + +## 3. Exercises: Booleans Part + +Boolean value is either true or false. + +1. Write three JavaScript statement which provide truthy value. +1. Write three JavaScript statement which provide falsy value. + +## 4. Exercises: Comparison Operators + +Figure out the result of the following comparison expression first without using console.log(). After you decide the result confirm it using console.log() + +1. 4 > 3 +1. 4 >= 3 +1. 4 < 3 +1. 4 <= 3 +1. 4 == 4 +1. 4 === 4 +1. 4 != 4 +1. 4 !== 4 +1. 4 != '4' +1. 4 == '4' +1. 4 === '4' + +## 5. Exercises: Logical Operators +Figure out the result of the following expressions first without using console.log(). After you decide the result confirm it by using console.log() +1. 4 > 3 && 10 < 12 +1. 4 > 3 && 10 > 12 +1. 4 > 3 || 10 < 12 +1. 4 > 3 || 10 > 12 +1. !(4 > 3) +1. !(4 < 3) +1. !(false) +1. !(4 > 3 && 10 < 12) +1. !(4 > 3 && 10 > 12) +1. !(4 === '4') +## 6. Exercises: Date time Object +1. What is the year today? +1. What is the month today? +1. What is the date today? +1. What is the day today? +1. What is the hours now? +1. What is the minutes now? +1. Find out the numbers of seconds elapsed from January 1, 1970 to now. +1. Create a human readable time format + 1. YYY-MM-DD HH:mm:ss + 2. DD-MM-YYYY HH:mm:ss + 3. DD/MM/YYY HH:mm:ss + + + From 40b665309e9b536a3cfdf9da09d3d0db6287b775 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 05:37:02 +0200 Subject: [PATCH 07/31] content added --- .gitignore | 9 ++++++- readMe.md | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 77 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index e8317f9..394c524 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,11 @@ playground /playground .DS_Store test.js -day3.md \ No newline at end of file +day3.md +day4.md +day5.md +day6.md +day7.md +day8.md +day9.md +day10.md \ No newline at end of file diff --git a/readMe.md b/readMe.md index 03f91a9..d3ab83b 100644 --- a/readMe.md +++ b/readMe.md @@ -51,6 +51,8 @@ - [Exercises: String Part](#exercises-string-part) - [📔 Day 3](#%f0%9f%93%94-day-3) - [Booleans](#booleans-1) + - [Truthy values:](#truthy-values) + - [Falsy values:](#falsy-values) - [Undefined](#undefined-1) - [Null](#null-1) - [Operators](#operators) @@ -60,6 +62,7 @@ - [Logical Operators](#logical-operators) - [Increment Operator](#increment-operator) - [Decrement Operator](#decrement-operator) + - [Ternary Operators](#ternary-operators) - [Operator Precendence](#operator-precendence) - [Date Object](#date-object) - [Creating a time object](#creating-a-time-object) @@ -76,7 +79,8 @@ - [3. Exercises: Booleans Part](#3-exercises-booleans-part) - [4. Exercises: Comparison Operators](#4-exercises-comparison-operators) - [5. Exercises: Logical Operators](#5-exercises-logical-operators) - - [6. Exercises: Date time Object](#6-exercises-date-time-object) + - [6 Ternary Operator](#6-ternary-operator) + - [7. Exercises: Date time Object](#7-exercises-date-time-object) # 📔Day 1 @@ -1143,8 +1147,24 @@ let isLightOn = true; let isRaining = false; let isHungery = false; let isMarried = true; -``` - +let truValue = 4 > 3 // true +let falseValue = 3 < 4 // false +``` +We agreed that boolean values are either true or false. +### Truthy values: +-- All numbers(positive and negative) are truthy except zero +-- All strings are truthy +-- The boolean true +### Falsy values: +-- 0 +-- 0n +-- null +-- undefined +-- NaN +-- the boolean false +-- '', "", ``, empty string + +It is good to remember those truthy values and falsy values. In later section, we will use them with conditions to make decision. ## Undefined If we declare a variable and if we do not assign a value, the value will be undefined. In addition to this, if a function is not returning the value will be undefined. @@ -1302,6 +1322,41 @@ let count = 0 console.log(count--) // 0 console.log(count) // -1 ``` +#### Ternary Operators +Ternary operator allows to write a condition. +Another way to write conditionals is using ternary operators. Look at the following examples: + +```js +let isRaining = true +isRaining + ? console.log('You need a rain coat.') + : console.log('No need for a rain coat.'); +isRaining = false + +isRaining + ? console.log('You need a rain coat.') + : console.log('No need for a rain coat.'); +``` +```sh +You need a rain coat. +No need for a rain coat. +``` + +```js +let number = 5 +number > 0 + ? console.log(`${number} is a positive number`) + : console.log(`${number} is a number number`); +number = -5 + +number > 0 + ? console.log(`${number} is a positive number`) + : console.log(`${number} is a number number`); +``` +```sh +5 is a positive number +-5 is a number number +``` ### Operator Precendence I would like to recommend you to read about operator precendence from this [link](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence) @@ -1430,7 +1485,17 @@ Figure out the result of the following expressions first without using console.l 1. !(4 > 3 && 10 < 12) 1. !(4 > 3 && 10 > 12) 1. !(4 === '4') -## 6. Exercises: Date time Object + +## 6 Ternary Operator +1. If the length of your name is greater than 7 say, your name is long else say your name is short. +2. Compare your first name length and your family name length and you should get this output. +```sh +let firstName = 'Asabeneh' +let lastName = 'Yetayeh +Your first name, Asabeneh is longer than your family name, Yetayeh +``` + +## 7. Exercises: Date time Object 1. What is the year today? 1. What is the month today? 1. What is the date today? From 05fc3c609d0fa9e9d2c43bef7de62607145aabb2 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 05:51:30 +0200 Subject: [PATCH 08/31] content added --- readMe.md | 52 +++++++++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/readMe.md b/readMe.md index d3ab83b..813e0b4 100644 --- a/readMe.md +++ b/readMe.md @@ -180,15 +180,15 @@ We add comments to our code. Comments are very important to make code more reada Example: Single Line Comment - // This is the first comment - // This is the second comment - // I am a single line comment + // This is the first comment + // This is the second comment + // I am a single line comment Example: Multiline Comment /* - This is a multiline comment - Multiline comments can take multiple lines - JavaScript is the language of the web + This is a multiline comment + Multiline comments can take multiple lines + JavaScript is the language of the web */ ##### Syntax @@ -450,11 +450,12 @@ Variables are _containers_ of data. Variables used to _store_ data in a memory l For a variable that changes at a different time, we use _let_. If the data does not change at all, we use _const_. For example, PI, country name, gravity do no change, and we can use *const*. -A JavaScript variable name should not begin with a number. -A JavaScript variable name does not allow special characters except dollar sign and underscore. -A JavaScript variable name follows a camelCase convention. -A JavaScript variable name should not have space between words. The following are valid examples of JavaScript variables. +* A JavaScript variable name should not begin with a number. +* A JavaScript variable name does not allow special characters except dollar sign and underscore. +* A JavaScript variable name follows a camelCase convention. +* A JavaScript variable name should not have space between words. +The following are valid examples of JavaScript variables. Valid variables in JavaScript: ```js firstName @@ -477,15 +478,14 @@ Valid variables in JavaScript: year2020 year_2020 ``` -Camel case or the first way of declaring is conventional in JavaScript. In this material, camelCase variables will be used. - +camelCase or the first way of declaring is conventional in JavaScript. In this material, we will use camelCase variables. Invalid variable: ```sh first-name 1_num num_#_1 ``` -Let's declare variables with different data types. To declare a variable, we need to use let or const keyword before the variable name. Following the variable name, we write an equal sign (assignment operator), and a value. +Let us declare variables with different data types. To declare a variable, we need to use let or const keyword before the variable name. Following the variable name, we write an equal sign (assignment operator), and a value. ```js # Syntax let nameOfVariable = value @@ -1152,17 +1152,17 @@ let falseValue = 3 < 4 // false ``` We agreed that boolean values are either true or false. ### Truthy values: --- All numbers(positive and negative) are truthy except zero --- All strings are truthy --- The boolean true +* All numbers(positive and negative) are truthy except zero +* All strings are truthy +* The boolean true ### Falsy values: --- 0 --- 0n --- null --- undefined --- NaN --- the boolean false --- '', "", ``, empty string +* 0 +* 0n +* null +* undefined +* NaN +* the boolean false +* '', "", ``, empty string It is good to remember those truthy values and falsy values. In later section, we will use them with conditions to make decision. ## Undefined @@ -1494,6 +1494,12 @@ let firstName = 'Asabeneh' let lastName = 'Yetayeh Your first name, Asabeneh is longer than your family name, Yetayeh ``` +3. Declare two variables _myAge_ and _yourAge_ and assign them initial values and myAge and yourAge. + Output: + ```sh + let myAge = 250 + let yourAge = 25 + I am 225 years older than you. ## 7. Exercises: Date time Object 1. What is the year today? From b85b314c17435c0cf2854cc243fbcd5c8344c829 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 07:10:26 +0200 Subject: [PATCH 09/31] content added --- readMe.md | 501 ++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 391 insertions(+), 110 deletions(-) diff --git a/readMe.md b/readMe.md index 813e0b4..653aad0 100644 --- a/readMe.md +++ b/readMe.md @@ -1,4 +1,5 @@ ## Table of Contents + ![Thirty Days Of JavaScript](./images/30DaysOfJavaScript.png) - [📔Day 1](#%f0%9f%93%94day-1) @@ -51,8 +52,8 @@ - [Exercises: String Part](#exercises-string-part) - [📔 Day 3](#%f0%9f%93%94-day-3) - [Booleans](#booleans-1) - - [Truthy values:](#truthy-values) - - [Falsy values:](#falsy-values) + - [Truthy values](#truthy-values) + - [Falsy values](#falsy-values) - [Undefined](#undefined-1) - [Null](#null-1) - [Operators](#operators) @@ -64,6 +65,10 @@ - [Decrement Operator](#decrement-operator) - [Ternary Operators](#ternary-operators) - [Operator Precendence](#operator-precendence) + - [Window Methods](#window-methods) + - [Window alert() method](#window-alert-method) + - [Window prompt() method](#window-prompt-method) + - [Window confirm() method](#window-confirm-method) - [Date Object](#date-object) - [Creating a time object](#creating-a-time-object) - [Getting full year](#getting-full-year) @@ -84,7 +89,9 @@ # 📔Day 1 + ## Introduction + **Congratulations** for deciding to participate in a 30 days of JavaScript programming challenge . In this challenge you will learn everything you need to be a JavaScript programmer and in general the whole concepts of programming. In the end of the challenge you will get a 30DaysOfJavaScript programming challenge certificate. Join the [telegram group](https://t.me/ThirtyDaysOfJavaScript). **A 30DaysOfJavaScript** challenge is a guide for both beginners and advanced JavaScript developers. Welcome to JavaScript. I enjoy using and teaching JavaScript and I hope you will do so. JavaScript is the language of the browser. @@ -94,8 +101,11 @@ You use JavaScript **_to add interactivity to websites, to develop mobile apps, **_JavaScript (JS)_** has increased in popularity in recent years and has been the leading programming language for four consecutive years and is the most used programming language on Github. + ## Requirements + No prior knowledge of programming is required to follow this challenge. You need only: + 1. Motivation 2. Computer 3. Internet @@ -103,9 +113,11 @@ No prior knowledge of programming is required to follow this challenge. You need 5. Code Editor ## Setup -I believe you have the motivation and a strong desire to be a developer, computer and Internet. If you have those, then you have everything. + +I believe you have the motivation and a strong desire to be a developer, computer and Internet. If you have those, then you have everything. ### Install Node.js + You may not need it right now but you may need it for later. Install [node.js](https://nodejs.org/en/). ![Node download](images/download_node.png) @@ -120,21 +132,27 @@ We can check if node is installed in our local machine by opening our device ter asabeneh $ node -v v12.14.0 ``` + I am using node version 12.14.0, which is the recommended version of node. ### Browser + There are many browsers out there. However, I strongly recommend Google Chrome. + #### Installing Google Chrome + Install [google chrome](https://www.google.com/chrome/) if you do not have one yet. We can write small JavaScript code on the browser console, but we do not use the browser console to develop applications. ![Google Chrome](images/google_chrome.png) #### Opening Google Chrome Console + You can open Google Chrome either by clicking three dots at the top right corner of the Chrome browser or using a shortcut. I prefer using shortcuts. + ![Opening chrome](images/opening_developer_tool.png) +To open the Chrome console using a short cut. -To open the Chrome console using a short cut. ```sh Mac Command+Option+I @@ -142,6 +160,7 @@ Command+Option+I Windows: Ctl+Shift+I ``` + ![Opening console](images/opening_chrome_console_shortcut.png) After you open the Google Chrome console, try to explore the marked buttons. We will spend most of the time on the Console part. The Console is the place where your JavaScript code goes. The Google Console V8 engine changes your JavaScript code to machine code. @@ -150,7 +169,9 @@ Let us write a JavaScript code on the Google Chrome console: ![write code on console](./images/js_code_on_chrome_console.png) #### Writing Code on browser Console + We can write any JavaScript code on the Google console or any browser console. However, for this challenge, we only focus on Google Chrome console. Open the console using: + ```sh Mac Command+Option+I @@ -158,12 +179,17 @@ Command+Option+I Windows: Ctl+Shift+I ``` + ##### Console.log + To write our first JavaScript code, we used a builtin function **console.log()**. We passed an argument as input data, and the function displays the output. We passed 'Hello, World' as input data or argument in the console.log() function. + ```js console.log('Hello, World!') ``` + ##### Console.log with multiple arguments + The console.log(param1, param2, param3), can take multiple arguments. ![console log multiple arguments](./images/console_log_multipl_arguments.png) @@ -172,10 +198,13 @@ console.log('Hello', 'World', '!') console.log('HAPPY', 'NEW', 'YEAR', 2020) console.log('Welcome', 'to', 30, 'Days', 'Of', 'JavaScript') ``` + As you can see from the above snippet code, *console.log()* can take multiple arguments. -Congratulations! You wrote your first JavaScript code using *console.log()*. +Congratulations! You wrote your first JavaScript code using *console.log()*. + ##### Comment + We add comments to our code. Comments are very important to make code more readable and to leave remarks in our code. JavaScript does not execute the comment part of our code. Any text starts with // in JavaScript is a comment or anything enclose like this /* */ is a comment. Example: Single Line Comment @@ -192,13 +221,13 @@ Example: Multiline Comment */ ##### Syntax + JavaScript is a programming language. As a result, it has its syntax like other programming languages. If we do not write a syntax that JavaScript understands, it will raise different types of errors. We will explore different kinds of JavaScript errors later. For now, let us see syntax errors. ![Error](images/raising_syntax_error.png) I made a deliberate mistake. As a result, the console raises a syntax error. Actually, the syntax is very informative. It informs what type of mistake we made. By reading the error feedback guideline, we can correct the syntax and fix the problem. The process of identifying and removing errors from a program is called debugging. Let us fix the errors: - ```js console.log("Hello, World!") console.log('Hello, World!') @@ -206,36 +235,43 @@ console.log('Hello, World!') So far, we saw how to display text using a *console.log()*. If we are printing text or string using *console.log()*, the text has to be under the single, double, or backtick. **Example:** + ```js console.log("Hello, World!") console.log('Hello, World!') console.log(`Hello, World!`) -``` +``` + #### Arithmetics -Now, let us practice more writing JavaScript codes using *console.log()* on google chrome console for number data types. +Now, let us practice more writing JavaScript codes using *console.log()* on google chrome console for number data types. In addition to the text, we can also do mathematical calculations using JavaScript. Let us do the following simple calculations. ![Arithmetic](images/arithmetic.png) + ```js console.log(2 + 3) // Addition console.log(3 - 2) // Subtraction console.log(2 * 3) // Multiplication console.log(3 / 2) // Division -console.log(3 % 2) // Modulus - finding remainder +console.log(3 % 2) // Modulus - finding remainder console.log(3 ** 2) // Exponential - -``` +``` ### Code Editor -We can write our codes on the browser console, but it won't be for bigger projects. In a real working environment, developers use different code editors to write their codes. In this 30 days python JavaScript challenge, we will use visual studio code. + +We can write our codes on the browser console, but it won't be for bigger projects. In a real working environment, developers use different code editors to write their codes. In this 30 days python JavaScript challenge, we will use visual studio code. + #### Installing Visual Studio Code + VVisual studio code is a very popular open-source text editor. I would recommend to [download](https://code.visualstudio.com/) visual studio code, but if you are in favor of other editors, feel free to follow with what you have. -![Vscode](images/vscode.png) +![Vscode](images/vscode.png) If you installed visual studio code, let us start using it. + #### How to use visual studio code + Open the visual studio code by double-clicking the visual studio icon. When you open it, you will get this kind of interface. Try to interact with the labeled icons. ![Vscode ui](./images/vscode_ui.png) @@ -246,6 +282,7 @@ Open the visual studio code by double-clicking the visual studio icon. When you ![coding running](./images/launched_on_new_tab.png) ## Adding JavaScript to a web page + JavaScript can be added to a web page in three different ways: - **_Inline script_** - **_Internal script_** @@ -269,9 +306,11 @@ Create a folder on your desktop and call it 30DaysOfJS or in any location and c ``` + Now, you wrote your first inline script. We can create a pop up alert message using the built-in *alert()* function. ### Internal script + The internal script can be written in the _head_ or the _body_, but it is preferred to put it on the body of the HTML document. First, let us write on the head part of the page. @@ -285,10 +324,10 @@ First, let us write on the head part of the page. - ``` + This is how we write the internal script most of the time. Writing the JavaScript code in the body section is the most preferred place. Open the browser console to see the output from the console.log() ```html @@ -305,12 +344,15 @@ This is how we write the internal script most of the time. Writing the JavaScrip ``` + Open the browser console to see the output from the console.log() ![js code from vscode](./images/js_code_vscode.png) ### External script + Similar to the internal script, the external script link can be on the header or body, but it is preferred to put it in the body. First, we should create an external JavaScript file with .js extension. Any JavaScript file ends with .js. Create a file introduction.js inside your project directory and write the following code and link this .js file at the bottom of the body. + ```js console.log('Welcome to 30DaysOfJavaScript') ``` @@ -328,7 +370,9 @@ External scripts in the head @@ -336,19 +380,24 @@ External scripts in the body 30DaysOfJavaScript:External script - //it could be in the header or in the body + //it could be in the header or in the body // Here is the recommended place to put the external script @@ -362,22 +411,25 @@ console.log('Hello, World!') b}`) ``` + ```sh 2 is greater than 3: false ``` + ### String Methods + Everything in JavaScript is an object. A string is a primitive data type that means we can not modify once it is created. The string object has many string methods. There are different string methods that can help us to work with strings. 1. *length*: The string *length* method returns the number of characters in a string included empty space. **Example:** + ```js let js = 'JavaScript' console.log(js.length) // 10 let firstName = 'Asabeneh' console.log(firstName.length) // 8 ``` + 2. *Accessing characters in a string*: We can access each character in a string using its index. In programming, counting starts from 0. The first index of the string is zero, and the last index is one minus the length of the string. - + ![Accessing sting by index](./images/string_indexes.png) Let us access different characters in 'JavaScript' string. + ```js let string = 'JavaScript' let firstLetter = string[0] @@ -843,9 +966,10 @@ console.log(lastLetter) // t let lastIndex = string.length - 1 console.log(lastIndex) // 9 console.log(string[lastIndex]) // t - ``` + 1. *toUpperCase()*: this method changes the string to uppercase letters. + ```js let string = 'JavaScript' console.log(string.toUpperCase()) // JAVASCRIPT @@ -853,10 +977,10 @@ let firstName = 'Asabeneh' console.log(firstName.toUpperCase()) // ASABENEH let country = 'Finland' console.log(country.toUpperCase()) // FINLAND - ``` 4. *toLowerCase()*: this method changes the string to lowercase letters. + ```js let string = 'JavasCript' console.log(string.toLowerCase()) // javascript @@ -864,16 +988,17 @@ let firstName = 'Asabeneh' console.log(firstName.toLowerCase()) // asabeneh let country = 'Finland' console.log(country.toLowerCase()) // finland - ``` + 5. *substr()*: It takes two arguments,the starting index and number of characters to slice. + ```js let string = 'JavaScript' console.log(string.substr(4,6)) // Script let country = 'Finland' console.log(country.substr(3, 4)) // land - ``` + 6. *substring()*: It takes two arguments,the starting index and the stopping index but it doesn't include the stopping index. ```js @@ -885,8 +1010,8 @@ let country = 'Finland' console.log(country.substring(0, 3)) // Fin console.log(country.substring(3, 7)) // land console.log(country.substring(3)) // land - ``` + 7. *split()*: The split method splits a string at a specified place. ```js @@ -899,25 +1024,27 @@ console.log(firstName.split('')) // ["A", "s", "a", "b", "e", "n", "e", "h"] let countries = 'Finland, Sweden, Norway, Denmark, and Iceland' console.log(countries.split(',')) // ["Finland", " Sweden", " Norway", " Denmark", " and Iceland"] console.log(countries.split(', ')) //  ["Finland", "Sweden", "Norway", "Denmark", "and Iceland"] - ``` + 8. *trim()*: Removes trailing space in the beginning or the end of a string. ```js let string = ' 30 Days Of JavaScript ' -console.log(string) // -console.log(string.trim(' ')) // +console.log(string) +console.log(string.trim(' ')) // let firstName = ' Asabeneh ' console.log(firstName) -console.log(firstName.trim()) // +console.log(firstName.trim()) // ``` + ```sh 30 Days Of JavasCript 30 Days Of JavasCript Asabeneh Asabeneh ``` -9. *includes()*: It takes a substring argument and it check if substring argument exists in the string. *includes()* returns a boolean. It checks if a substring exist in a string and it returns true if it exists and false if it doesn't exist. + +9. *includes()*: It takes a substring argument and it check if substring argument exists in the string. *includes()* returns a boolean. It checks if a substring exist in a string and it returns true if it exists and false if it doesn't exist. ```js let string = '30 Days Of JavaScript' @@ -933,31 +1060,36 @@ console.log(country.includes('fin')) // false console.log(country.includes('Fin')) // true console.log(country.includes('land')) // true console.log(country.includes('Land')) // false - ``` + 10. *replace()*: takes to parameter the old substring and new substring. ```js string.replace(oldsubstring, newsubstring) ``` + ```js let string = '30 Days Of JavaScript' console.log(string.replace('JavaScript', 'Python')) // 30 Days Of Python let country = 'Finland' -console.log(country.replace('Fin', 'Noman')) Nomanland +console.log(country.replace('Fin', 'Noman')) // Nomanland ``` + 11. *charAt()*: Takes index and it returns the value at that index + ```js string.charAt(index) ``` + ```js let string = '30 Days Of JavaScript' console.log(string.charAt(0)) // 3 let lastIndex = string.length - 1 console.log(string.charAt(lastIndex)) // t - ``` + 12. *charCodeAt()*: Takes index and it returns char code(ASCII number) of the value at that index + ```js string.charCodeAt(index) ``` @@ -969,9 +1101,11 @@ console.log(string.charCodeAt(lastIndex)) // t ASCII is 116 ``` 13. *indexOf()*: Takes takes a substring and if the substring exists in a string it returns the first position of the substring if does not exist it returns -1 + ```js string.indexOf(substring) ``` + ```js let string = '30 Days Of JavaScript' console.log(string.indexOf('D')) // 3 @@ -981,36 +1115,41 @@ console.log(string.indexOf('a')) // 4 console.log(string.indexOf('JavaScript')) // 11 console.log(string.indexOf('Script')) //15 console.log(string.indexOf('script')) // -1 - ``` + 14. *lastIndexOf()*: Takes takes a substring and if the substring exists in a string it returns the last position of the substring if it does not exist it returns -1 + ```js string.lastIndexOf(index) ``` + ```js let string = 'I love JavaScript. If you do not love JavaScript what else can you love.' console.log(string.lastIndexOf('love')) // 67 console.log(string.lastIndexOf('you')) // 63 console.log(string.lastIndexOf('JavaScript')) // 38 - ``` 15. *concat()*: it takes many substrings and creates concatenation. + ```js string.concat(substring, substring, substring) ``` + ```js let string = '30' console.log(string.concat("Days", "Of", "JavaScript")) // 30DaysOfJavaScript let country = 'Fin' console.log(country.concat("land")) // Finland - ``` 16. *startsWith*: it takes a substring as an argument and it checks if the string starts with that specified substring. It returns a boolean(true or false). + ```js +//syntax string.startsWith(substring) ``` + ```js let string = 'Love is the best to in this world' console.log(string.startsWith('Love')) // true @@ -1021,12 +1160,14 @@ let country = 'Finland' console.log(country.startsWith('Fin')) // true console.log(country.startsWith('fin')) // false console.log(country.startsWith('land')) // false - ``` + 17. *endsWith*: it takes a substring as an argument and it checks if the string starts with that specified substring. It returns a boolean(true or false). + ```js string.endsWith(substring) ``` + ```js let string = 'Love is the best to in this world' console.log(string.endsWith('world')) // true @@ -1037,27 +1178,31 @@ let country = 'Finland' console.log(country.endsWith('land')) // true console.log(country.endsWith('fin')) // false console.log(country.endsWith('Fin')) // false - ``` + 18. *search*: it takes a substring as an argument and it returns the index of the first match. + ```js string.search(substring) ``` + ```js let string = 'I love JavaScript. If you do not love JavaScript what else can you love.' console.log(string.search('love')) // 2 +``` +19. *match*: it takes a substring or regular expression pattern as an argument and it returns an array if there is match if not it returns null. Let us see how a regular expression pattern looks like. It starts with / sign and ends with / sign. + +```js +let string = 'love' +let patternOne = /love/ // with out any flag +let patternTwo = /love/gi // g-means to search in the whole text, i - case insensitive ``` -19. *match*: it takes a substring or regular expression pattern as an argument and it returns an array if there is match if not it returns null. Let us see how a regular expression pattern looks like. It starts with / sign and ends with / sign. - ```js - let string = 'love' - let patternOne = /love/ // with out any flag - let patternTwo = /love/gi // g-means to search in the whole text, i - case insensitive - ``` ```js string.match(substring) ``` + ```js let string = 'I love JavaScript. If you do not love JavaScript what else can you love.' console.log(string.match('love')) // @@ -1068,11 +1213,11 @@ output */ let pattern = /love/gi console.log(string.match(pattern)) // ["love", "love", "love"] - ``` + Let us extract numbers from text using regular expression. This is not regular expression section, no panic. -```js +```js let txt = 'In 2019, I run 30 Days of Pyhton. Now, in 2020 I super exited to start this challenge' let regEx = /\d+/ // d with escape character means d not a normal d instead acts a digit // + means one or more digit numbers, @@ -1080,18 +1225,20 @@ let regEx = /\d+/ // d with escape character means d not a normal d instead acts console.log(txt.match(regEx)) // ["2", "0", "1", "9", "3", "0", "2", "0", "2", "0"] console.log(txt.match(/\d+/g)) // ["2019", "30", "2020"] ``` + 20. *repeat()*: it takes a number argument and it returned the repeated version of the string. + ```js string.repeat(n) ``` + ```js let string = 'love' console.log(string.repeat(10)) // lovelovelovelovelovelovelovelovelovelove ``` - - # 💻 Day 2: Exercises + ## Exercises: String Part 1. Declare a variable name challenge and assign it to an initial value **'30 Days Of JavaScript'**. @@ -1124,48 +1271,62 @@ console.log(string.repeat(10)) // lovelovelovelovelovelovelovelovelovelove 28. Love is the best thing in this world. Some found their love and some are still looking for their love. Count the number of word love in this sentence. 29. Calculate the total annual income of the person by extract the numbers from the following text. 'He earns 5000 euro from salary per month, 10000 euro annual bonus, 15000 euro online courses per month.' 30. Clean the following text and find the most frequent word(hint, use replace and regular express). + ```js const sentence = '%I $am@% a %tea@cher%, &and& I lo%#ve %tea@ching%;. There $is nothing; &as& mo@re rewarding as educa@ting &and& @emp%o@wering peo@ple. ;I found tea@ching m%o@re interesting tha@n any other %jo@bs. %Do@es thi%s mo@tivate yo@u to be a tea@cher!? %Th#is 30#Days&OfJavaScript &is also $the $result of &love& of tea&ching' ``` + 31. Using console.log() print out the following statement. - ```sh - The quote 'There is no exercise better for the heart than reaching down and lifting people up.' by John Holmes teaches us to help to one another. - ``` + +```sh +The quote 'There is no exercise better for the heart than reaching down and lifting people up.' by John Holmes teaches us to help to one another. +``` + 32. Using console.log() print out the following quote by Mother Teresa. + ```sh "Love is not patronizing and charity isn't about pity, it is about love. Charity and love are the same -- with charity you give love, so don't just give money but reach out your hand instead." ``` # 📔 Day 3 + ## Booleans -A boolean data type represents one of the two values:_true_ or _false_. Boolean value is either true or false. The use of these data types will be clear when you start the comparison operator. Any comparisons return a boolean value which is either true or false. +A boolean data type represents one of the two values:_true_ or _false_. Boolean value is either true or false. The use of these data types will be clear when you start the comparison operator. Any comparisons return a boolean value which is either true or false. **Example: Boolean Values** + ```js let isLightOn = true; let isRaining = false; -let isHungery = false; +let isHungry = false; let isMarried = true; let truValue = 4 > 3 // true let falseValue = 3 < 4 // false ``` -We agreed that boolean values are either true or false. -### Truthy values: -* All numbers(positive and negative) are truthy except zero -* All strings are truthy -* The boolean true -### Falsy values: -* 0 -* 0n -* null -* undefined -* NaN -* the boolean false -* '', "", ``, empty string + +We agreed that boolean values are either true or false. + +### Truthy values + +- All numbers(positive and negative) are truthy except zero +- All strings are truthy +- The boolean true + +### Falsy values + +- 0 +- 0n +- null +- undefined +- NaN +- the boolean false +- '', "", ``, empty string It is good to remember those truthy values and falsy values. In later section, we will use them with conditions to make decision. + ## Undefined + If we declare a variable and if we do not assign a value, the value will be undefined. In addition to this, if a function is not returning the value will be undefined. ```js @@ -1182,22 +1343,26 @@ console.log(empty); // -> null , means no value ## Operators -### Assignment operators +### Assignment operators + An equal sign in JavaScript is an assignment operator. It uses to assign a variable. + ```js let firstName = 'Asabeneh' let country = 'Finland' - ``` + Assignment Operators ![Assignment operators](images/assignment_operators.png) ### Arithmetic Operators + Arithmetic operators are mathematical operators. + - Addition(+): a + b - Subtraction(-): a - b -- Multiplication(*):a * b +- Multiplication(*): a * b - Division(/): a / b - Modulus(%):a % b - Exponential(**):a ** b @@ -1238,9 +1403,10 @@ console.log( `The boiling point of water is ${boilingPoint} oC.\nHuman body temperature is ${bodyTemp} oC.\nThe gravity of earth is ${gravity} m / s2.` ); ``` + ### Comparison Operators -In programming we compare values, we use comparison operators to compare two values. We check if a value is greater or less or equal to other value. +In programming we compare values, we use comparison operators to compare two values. We check if a value is greater or less or equal to other value. ![Comparison Operators](./images/comparison_operators.png) **Example: Comparison Operators** @@ -1293,36 +1459,51 @@ let isLightOn = true; let isLightOff = !isLightOn; // -> false let isMarried = !false; // -> true ``` + ### Increment Operator + In JavaScrip we use the increment operator to increase a value stored in a variable. The increment could be pre or post increment. Let us see each of them: + 1. Pre-increment + ```js let count = 0 console.log(++count) // 1 console.log(count) // 1 ``` -2. Post-increment + +1. Post-increment + ```js let count = 0 console.log(count++) // 0 console.log(count) // 1 ``` + We use most of the time post-increment. At leas you should remember how to use post-increment operator. + ### Decrement Operator + In JavaScrip we use the decrement operator to decrease a value stored in a variable. The decrement could be pre or post decrement. Let us see each of them: + 1. Pre-decrement + ```js let count = 0 console.log(--count) // -1 console.log(count) // -1 ``` + 2. Post-decrement + ```js let count = 0 console.log(count--) // 0 console.log(count) // -1 ``` + #### Ternary Operators + Ternary operator allows to write a condition. Another way to write conditionals is using ternary operators. Look at the following examples: @@ -1337,6 +1518,7 @@ isRaining ? console.log('You need a rain coat.') : console.log('No need for a rain coat.'); ``` + ```sh You need a rain coat. No need for a rain coat. @@ -1353,79 +1535,152 @@ number > 0 ? console.log(`${number} is a positive number`) : console.log(`${number} is a number number`); ``` + ```sh 5 is a positive number -5 is a number number ``` + ### Operator Precendence + I would like to recommend you to read about operator precendence from this [link](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence) +## Window Methods + +### Window alert() method + +As you have seen at very beginning alert() method displays an alert box with a specified message and an OK button. It is a builtin method and it takes on argument. + +```js +alert(mesage) +``` + +```js +alert('Welcome to 30DaysOfJavaScript') +``` + +Do not use too much alert because it is destructing and annoying, use it just for to test. + +### Window prompt() method + +The window prompt methods display a prompt box with an input on your browser to take input values and the input data can be stored in a variable. The prompt() method takes two arguments. The second argument is optional. + +```js +prompt('required text', 'optional text') +``` + +```js +let number = prompt('Enter number', 'number goes here') +console.log(number) +``` + +### Window confirm() method + +The confirm() method displays a dialog box with a specified message, along with an OK and a Cancel button. +A confirm box is often used to ask permission from a user to do something. Window confirm() takes an string as an argument. +Clicking the OK yields true value, clicking the Cancel yields true value. + +```js +const agree = confirm('Do you like to delete ? ') +console.log(agree) +``` + ## Date Object + Time is an important thing. We like to know the time a certain activity or event. In JavaScript current time and date is created using JavaScript Date Object. The object we create using Date object provides many methods to work with date and time.The methods we use to get date and time information from a date object values are started with a word _get_ because it provide the information. _getFullYear(), getMonths(), getDate(), getDay(), getHours(), getMinutes, getSeconds(), getMilliseconds(), getTime(), getDay()_ ![Date time Object](images/date_time_object.png) + ### Creating a time object + Once we create time object. The time object will provide information about time. Let us create a time object + ```js -const now = new Date () // +const now = new Date () console.log(now) // Sat Jan 04 2020 00:56:41 GMT+0200 (Eastern European Standard Time) ``` + We have created a time object and we can access any date time information from the object using the get methods we have mentioned on the table. + ### Getting full year + Let's extract or get the full from a time object. + ```js -const now = new Date () // +const now = new Date () console.log(now.getFullYear()) // 2020 ``` + ### Getting month + Let's extract or get the month from a time object. + ```js -const now = new Date () // +const now = new Date () console.log(now.getMonth()) // 0, because the month is January, month(0-11) ``` + ### Getting date + Let's extract or get the date of the month from a time object. + ```js -const now = new Date () // +const now = new Date () console.log(now.getMonth()) // 0, because the month is January, month(0-11) ``` + ### Getting hours + Let's extract or get the hours from a time object. + ```js -const now = new Date () // +const now = new Date () console.log(now.getHours()) // 0, because the time is 00:56:41 ``` + ### Getting minutes + Let's extract or get the minutes from a time object. + ```js -const now = new Date () // +const now = new Date () console.log(now.getMinutes()) // 56, because the time is 00:56:41 ``` + ### Getting seconds + Let's extract or get the minutes from a time object. + ```js const now = new Date () // console.log(now.getMinutes()) // 56, because the time is 00:56:41 ``` + ### Getting time + This method give time in milliseconds starting from January 1, 1970. It is also know as Unix time. We can get the unix time in two ways: + 1. Using *getTime()* + ```js -const now = new Date () // +const now = new Date () // console.log(now.getTime()) // 1578092201341, this is the number of seconds passed from January 1, 1970 to January 4, 2020 00:56:41 ``` + 2. Using *Date.now()* + ```js const allSeconds = Date.now () // console.log(allSeconds) // 1578092201341, this is the number of seconds passed from January 1, 1970 to January 4, 2020 00:56:41 const timeInSeconds = new Date ().getTime() console.log(allSeconds == timeInSeconds) // true ``` + Let us format these values to a human readable time format. **Example:** -```js +```js const now = new Date (); const year = now.getFullYear(); // return year const month = now.getMonth() + 1; // return month(0 - 11) @@ -1434,20 +1689,24 @@ const hours = now.getHours(); // return number (0 - 23) const minutes = now.getMinutes();// return number (0 -59) console.log(`${date}/${month}/${year} ${hours}:${minutes}`) // 4/1/2020 0:56 ``` - + # 💻 Day 3: Exercises + ## 1. Exercises: Data types Part + 1. Declare firstName, lastName, country, city, age, isMarried, year variable and assign value to it 1. The JavaScript typeof operator uses to check different data types. Check the data type of each variables from question number 1. - + ## 2. Exercises: Arithmetic Operators Part + JavaScript arithmetic operators are addition(+), subtraction(-), multiplication(*), division(/), modulus(%), exponential(**), increment(++) and decrement(--). ```js let operandOne = 4; let operandTwo = 3; ``` + Using the above operands apply different JavaScript arithmetic operations. ## 3. Exercises: Booleans Part @@ -1474,7 +1733,9 @@ Figure out the result of the following comparison expression first without using 1. 4 === '4' ## 5. Exercises: Logical Operators + Figure out the result of the following expressions first without using console.log(). After you decide the result confirm it by using console.log() + 1. 4 > 3 && 10 < 12 1. 4 > 3 && 10 > 12 1. 4 > 3 || 10 < 12 @@ -1487,21 +1748,44 @@ Figure out the result of the following expressions first without using console.l 1. !(4 === '4') ## 6 Ternary Operator + 1. If the length of your name is greater than 7 say, your name is long else say your name is short. 2. Compare your first name length and your family name length and you should get this output. -```sh + +```js let firstName = 'Asabeneh' let lastName = 'Yetayeh +``` + +```sh +//Output Your first name, Asabeneh is longer than your family name, Yetayeh ``` -3. Declare two variables _myAge_ and _yourAge_ and assign them initial values and myAge and yourAge. + +1. Declare two variables _myAge_ and _yourAge_ and assign them initial values and myAge and yourAge. Output: - ```sh + + ```js let myAge = 250 let yourAge = 25 + ``` + + ```sh + //output I am 225 years older than you. + ``` + +2. Using prompt get the year the user was born and if the user is 18 or above allow the user to drive if not tell the user to wait a certain amount of years. + +```js +// if the age is 25 +You are 25. You are old enough to drive +// if the age is under 18 + You are 15. You will be allowed to drive after 3 years. +``` ## 7. Exercises: Date time Object + 1. What is the year today? 1. What is the month today? 1. What is the date today? @@ -1509,10 +1793,7 @@ Your first name, Asabeneh is longer than your family name, Yetayeh 1. What is the hours now? 1. What is the minutes now? 1. Find out the numbers of seconds elapsed from January 1, 1970 to now. -1. Create a human readable time format - 1. YYY-MM-DD HH:mm:ss - 2. DD-MM-YYYY HH:mm:ss - 3. DD/MM/YYY HH:mm:ss - - - +1. Create a human readable time format + 1. YYY-MM-DD HH:mm:ss + 2. DD-MM-YYYY HH:mm:ss + 3. DD/MM/YYY HH:mm:ss \ No newline at end of file From 903e2dcb61c2f32628b7a43837076a78287b9c9f Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 07:12:49 +0200 Subject: [PATCH 10/31] content added --- readMe.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readMe.md b/readMe.md index 653aad0..764a750 100644 --- a/readMe.md +++ b/readMe.md @@ -1762,7 +1762,7 @@ let lastName = 'Yetayeh Your first name, Asabeneh is longer than your family name, Yetayeh ``` -1. Declare two variables _myAge_ and _yourAge_ and assign them initial values and myAge and yourAge. +3. Declare two variables _myAge_ and _yourAge_ and assign them initial values and myAge and yourAge. Output: ```js @@ -1775,7 +1775,7 @@ Your first name, Asabeneh is longer than your family name, Yetayeh I am 225 years older than you. ``` -2. Using prompt get the year the user was born and if the user is 18 or above allow the user to drive if not tell the user to wait a certain amount of years. +4. Using prompt get the year the user was born and if the user is 18 or above allow the user to drive if not tell the user to wait a certain amount of years. ```js // if the age is 25 From 39d469e0a9ff55bb80537ca18943c407a31e0b78 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 07:22:26 +0200 Subject: [PATCH 11/31] Fixing errors --- readMe.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readMe.md b/readMe.md index 764a750..1c2ca5b 100644 --- a/readMe.md +++ b/readMe.md @@ -1259,7 +1259,7 @@ console.log(string.repeat(10)) // lovelovelovelovelovelovelovelovelovelove 16. Use __indexOf__ to determine the position of the first occurrence of a in 30 Days Of JavaScript 17. Use __lastIndexOf__ to determine the position of the last occurrence of a in 30 Days Of JavaScript. 18. Use __indexOf__ to find the position of the first occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ -19. Use __lastIndexOf__ to find the position of the first occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ +19. Use __lastIndexOf__ to find the position of the last occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ 20. Use __search__ to find the position of the first occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ 21. Use __trim()__ to remove if there is trailing whitespace at the beginning and the end of a string.E.g ' 30 Days Of JavaScript '. 22. Use __startsWith()__ method with the string *30 Days Of JavaScript* make the result true @@ -1796,4 +1796,4 @@ You are 25. You are old enough to drive 1. Create a human readable time format 1. YYY-MM-DD HH:mm:ss 2. DD-MM-YYYY HH:mm:ss - 3. DD/MM/YYY HH:mm:ss \ No newline at end of file + 3. DD/MM/YYY HH:mm:ss From 38e670da5ff31b658bc88ad537c81aa4e271e0e4 Mon Sep 17 00:00:00 2001 From: Patrick Njuguna Date: Sat, 4 Jan 2020 15:35:05 +0300 Subject: [PATCH 12/31] getSeconds example fix --- readMe.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readMe.md b/readMe.md index 1c2ca5b..5d37bba 100644 --- a/readMe.md +++ b/readMe.md @@ -1650,11 +1650,11 @@ console.log(now.getMinutes()) // 56, because the time is 00:56:41 ### Getting seconds -Let's extract or get the minutes from a time object. +Let's extract or get the seconds from a time object. ```js const now = new Date () // -console.log(now.getMinutes()) // 56, because the time is 00:56:41 +console.log(now.getSeconds()) // 41, because the time is 00:56:41 ``` ### Getting time From 26c53809d3b2fbaf212c0132716945b4cb994010 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 15:11:51 +0200 Subject: [PATCH 13/31] cleaning day 1 day 2 day3 --- readMe.md | 43 +++++++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/readMe.md b/readMe.md index 5d37bba..473e2d9 100644 --- a/readMe.md +++ b/readMe.md @@ -74,6 +74,7 @@ - [Getting full year](#getting-full-year) - [Getting month](#getting-month) - [Getting date](#getting-date) + - [Getting day](#getting-day) - [Getting hours](#getting-hours) - [Getting minutes](#getting-minutes) - [Getting seconds](#getting-seconds) @@ -990,7 +991,7 @@ let country = 'Finland' console.log(country.toLowerCase()) // finland ``` -5. *substr()*: It takes two arguments,the starting index and number of characters to slice. +5. *substr()*: It takes two arguments, the starting index and number of characters to slice. ```js let string = 'JavaScript' @@ -999,7 +1000,7 @@ let country = 'Finland' console.log(country.substr(3, 4)) // land ``` -6. *substring()*: It takes two arguments,the starting index and the stopping index but it doesn't include the stopping index. +6. *substring()*: It takes two arguments, the starting index and the stopping index but it doesn't include the stopping index. ```js let string = 'JavaScript' @@ -1093,6 +1094,7 @@ console.log(string.charAt(lastIndex)) // t ```js string.charCodeAt(index) ``` + ```js let string = '30 Days Of JavaScript' console.log(string.charCodeAt(3)) // D ASCII number is 51 @@ -1100,6 +1102,7 @@ let lastIndex = string.length - 1 console.log(string.charCodeAt(lastIndex)) // t ASCII is 116 ``` + 13. *indexOf()*: Takes takes a substring and if the substring exists in a string it returns the first position of the substring if does not exist it returns -1 ```js @@ -1552,7 +1555,7 @@ I would like to recommend you to read about operator precendence from this [link As you have seen at very beginning alert() method displays an alert box with a specified message and an OK button. It is a builtin method and it takes on argument. ```js -alert(mesage) +alert(message) ``` ```js @@ -1581,10 +1584,12 @@ A confirm box is often used to ask permission from a user to do something. Windo Clicking the OK yields true value, clicking the Cancel yields true value. ```js -const agree = confirm('Do you like to delete ? ') -console.log(agree) +const agree = confirm('Are you sure you like to delete? ') +console.log(agree) // result will be true or false based on what you click on the dialog box ``` +These are not all the window methods we will have a separate section to go deep into window methods. + ## Date Object Time is an important thing. We like to know the time a certain activity or event. In JavaScript current time and date is created using JavaScript Date Object. The object we create using Date object provides many methods to work with date and time.The methods we use to get date and time information from a date object values are started with a word _get_ because it provide the information. @@ -1627,7 +1632,17 @@ Let's extract or get the date of the month from a time object. ```js const now = new Date () -console.log(now.getMonth()) // 0, because the month is January, month(0-11) +console.log(now.getDate()) // 4, because the day of the month is 4th, day(0-31) +``` + +### Getting day + +Let's extract or get the day of the week from a time object. + +```js +const now = new Date () +console.log(now.getDay()) // 6, because the day is Saturday which is the 5th day, +// Getting the weekday as a number (0-6) ``` ### Getting hours @@ -1653,7 +1668,7 @@ console.log(now.getMinutes()) // 56, because the time is 00:56:41 Let's extract or get the seconds from a time object. ```js -const now = new Date () // +const now = new Date () console.log(now.getSeconds()) // 41, because the time is 00:56:41 ``` @@ -1668,12 +1683,12 @@ const now = new Date () // console.log(now.getTime()) // 1578092201341, this is the number of seconds passed from January 1, 1970 to January 4, 2020 00:56:41 ``` -2. Using *Date.now()* +1. Using *Date.now()* ```js const allSeconds = Date.now () // console.log(allSeconds) // 1578092201341, this is the number of seconds passed from January 1, 1970 to January 4, 2020 00:56:41 -const timeInSeconds = new Date ().getTime() +const timeInSeconds = new Date ().getTime() console.log(allSeconds == timeInSeconds) // true ``` @@ -1750,7 +1765,7 @@ Figure out the result of the following expressions first without using console.l ## 6 Ternary Operator 1. If the length of your name is greater than 7 say, your name is long else say your name is short. -2. Compare your first name length and your family name length and you should get this output. +1. Compare your first name length and your family name length and you should get this output. ```js let firstName = 'Asabeneh' @@ -1762,7 +1777,7 @@ let lastName = 'Yetayeh Your first name, Asabeneh is longer than your family name, Yetayeh ``` -3. Declare two variables _myAge_ and _yourAge_ and assign them initial values and myAge and yourAge. +1. Declare two variables _myAge_ and _yourAge_ and assign them initial values and myAge and yourAge. Output: ```js @@ -1775,7 +1790,7 @@ Your first name, Asabeneh is longer than your family name, Yetayeh I am 225 years older than you. ``` -4. Using prompt get the year the user was born and if the user is 18 or above allow the user to drive if not tell the user to wait a certain amount of years. +1. Using prompt get the year the user was born and if the user is 18 or above allow the user to drive if not tell the user to wait a certain amount of years. ```js // if the age is 25 @@ -1787,9 +1802,9 @@ You are 25. You are old enough to drive ## 7. Exercises: Date time Object 1. What is the year today? -1. What is the month today? +1. What is the month today as a number? 1. What is the date today? -1. What is the day today? +1. What is the day today as a number? 1. What is the hours now? 1. What is the minutes now? 1. Find out the numbers of seconds elapsed from January 1, 1970 to now. From 2cefc1adda02761b98211a6231dc04256ada79aa Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 15:41:53 +0200 Subject: [PATCH 14/31] restructuring files --- .gitignore | 3 +- {01-Day => 01_Day}/helloworld.js | 0 {01-Day => 01_Day}/index.html | 0 {01-Day => 01_Day}/introduction.js | 0 {01-Day => 01_Day}/main.js | 0 {01-Day => 01_Day}/varaible.js | 0 02_Day/02_day_strings.md | 706 +++++++++ {02-Day => 02_Day}/index.html | 0 {02-Day => 02_Day}/main.js | 0 {02-Day => 02_Day}/math_object.js | 0 .../non_primitive_data_types.js | 0 {02-Day => 02_Day}/number_data_types.js | 0 {02-Day => 02_Day}/primitive_data_types.js | 0 {02-Day => 02_Day}/string_concatenation.js | 0 {02-Day => 02_Day}/string_data_types.js | 0 .../string_methods/accessing_character.js | 0 {02-Day => 02_Day}/string_methods/char_at.js | 0 .../string_methods/char_code_at.js | 0 {02-Day => 02_Day}/string_methods/concat.js | 0 .../string_methods/ends_with.js | 0 {02-Day => 02_Day}/string_methods/includes.js | 0 {02-Day => 02_Day}/string_methods/index_of.js | 0 .../string_methods/last_index_of.js | 0 {02-Day => 02_Day}/string_methods/length.js | 0 {02-Day => 02_Day}/string_methods/match.js | 0 {02-Day => 02_Day}/string_methods/repeat.js | 0 {02-Day => 02_Day}/string_methods/replace.js | 0 {02-Day => 02_Day}/string_methods/search.js | 0 {02-Day => 02_Day}/string_methods/split.js | 0 .../string_methods/starts_with.js | 0 {02-Day => 02_Day}/string_methods/substr.js | 0 .../string_methods/substring.js | 0 .../string_methods/to_lowercase.js | 0 .../string_methods/to_uppercase.js | 0 {02-Day => 02_Day}/string_methods/trim.js | 0 03_Day/03_booleans_operators_date.md | 565 ++++++++ readMe.md | 1268 +---------------- 37 files changed, 1281 insertions(+), 1261 deletions(-) rename {01-Day => 01_Day}/helloworld.js (100%) rename {01-Day => 01_Day}/index.html (100%) rename {01-Day => 01_Day}/introduction.js (100%) rename {01-Day => 01_Day}/main.js (100%) rename {01-Day => 01_Day}/varaible.js (100%) create mode 100644 02_Day/02_day_strings.md rename {02-Day => 02_Day}/index.html (100%) rename {02-Day => 02_Day}/main.js (100%) rename {02-Day => 02_Day}/math_object.js (100%) rename {02-Day => 02_Day}/non_primitive_data_types.js (100%) rename {02-Day => 02_Day}/number_data_types.js (100%) rename {02-Day => 02_Day}/primitive_data_types.js (100%) rename {02-Day => 02_Day}/string_concatenation.js (100%) rename {02-Day => 02_Day}/string_data_types.js (100%) rename {02-Day => 02_Day}/string_methods/accessing_character.js (100%) rename {02-Day => 02_Day}/string_methods/char_at.js (100%) rename {02-Day => 02_Day}/string_methods/char_code_at.js (100%) rename {02-Day => 02_Day}/string_methods/concat.js (100%) rename {02-Day => 02_Day}/string_methods/ends_with.js (100%) rename {02-Day => 02_Day}/string_methods/includes.js (100%) rename {02-Day => 02_Day}/string_methods/index_of.js (100%) rename {02-Day => 02_Day}/string_methods/last_index_of.js (100%) rename {02-Day => 02_Day}/string_methods/length.js (100%) rename {02-Day => 02_Day}/string_methods/match.js (100%) rename {02-Day => 02_Day}/string_methods/repeat.js (100%) rename {02-Day => 02_Day}/string_methods/replace.js (100%) rename {02-Day => 02_Day}/string_methods/search.js (100%) rename {02-Day => 02_Day}/string_methods/split.js (100%) rename {02-Day => 02_Day}/string_methods/starts_with.js (100%) rename {02-Day => 02_Day}/string_methods/substr.js (100%) rename {02-Day => 02_Day}/string_methods/substring.js (100%) rename {02-Day => 02_Day}/string_methods/to_lowercase.js (100%) rename {02-Day => 02_Day}/string_methods/to_uppercase.js (100%) rename {02-Day => 02_Day}/string_methods/trim.js (100%) create mode 100644 03_Day/03_booleans_operators_date.md diff --git a/.gitignore b/.gitignore index 394c524..35b0e83 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,5 @@ day6.md day7.md day8.md day9.md -day10.md \ No newline at end of file +day10.md +01_02_03_days_backup.md \ No newline at end of file diff --git a/01-Day/helloworld.js b/01_Day/helloworld.js similarity index 100% rename from 01-Day/helloworld.js rename to 01_Day/helloworld.js diff --git a/01-Day/index.html b/01_Day/index.html similarity index 100% rename from 01-Day/index.html rename to 01_Day/index.html diff --git a/01-Day/introduction.js b/01_Day/introduction.js similarity index 100% rename from 01-Day/introduction.js rename to 01_Day/introduction.js diff --git a/01-Day/main.js b/01_Day/main.js similarity index 100% rename from 01-Day/main.js rename to 01_Day/main.js diff --git a/01-Day/varaible.js b/01_Day/varaible.js similarity index 100% rename from 01-Day/varaible.js rename to 01_Day/varaible.js diff --git a/02_Day/02_day_strings.md b/02_Day/02_day_strings.md new file mode 100644 index 0000000..74717dc --- /dev/null +++ b/02_Day/02_day_strings.md @@ -0,0 +1,706 @@ + +## Table of Contents + +![Thirty Days Of JavaScript](./images/30DaysOfJavaScript.png) + +[<< Day 1](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/readMe.md) | [Day 3 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/03_Day/03_booleans_operators_date.md) + +- [📔 Day 2](#%f0%9f%93%94-day-2) + - [Data types](#data-types) + - [Primitive Data Types](#primitive-data-types) + - [Non-Primitive Data Types](#non-primitive-data-types) + - [Numbers](#numbers) + - [Declaring number data types](#declaring-number-data-types) + - [Math Object](#math-object) + - [Strings](#strings) + - [String Concatenation](#string-concatenation) + - [Concatenating using addition operator](#concatenating-using-addition-operator) + - [Long Literal Strings](#long-literal-strings) + - [Escape Sequences in string](#escape-sequences-in-string) + - [Template Literals(Template Strings)](#template-literalstemplate-strings) + - [String Methods](#string-methods) +- [💻 Day 2: Exercises](#%f0%9f%92%bb-day-2-exercises) + - [Exercises: String Part](#exercises-string-part) + +# 📔 Day 2 + +## Data types + +In the previous section, we mentioned a little bit about data types. Data or values have data types. Data types describe the characteristics of data. Data types can be divided into two + +1. Primitive data types +2. Non-primitive data types(Object References) + +### Primitive Data Types + +Primitive data types in JavaScript includes: + + 1. Numbers - Integers, floats + 2. Strings - Any data under single or double quote + 3. Booleans - true or false value + 4. Null - empty value or no value + 5. Undefined - a declared variable without a value + +Non-primitive data types in JavaScript includes: + +1. Objects +2. Functions +3. Arrays + +Now, let us see what exactly mean primitive and non-primitive data types. +*Primitive* data types are immutable(non-modifiable) data types. Once a primitive data type is created we can not modify it. +**Example:** + +```js +let word = 'JavaScript' +``` + +If we try to modify the string stored in variable *word*, JavaScript will raise an error. Any data type under a single quote, double-quote, or backtick is a string data type. + +```js +word[0] = 'Y' +``` + +This expression does not change the string stored in the variable *word*. So, we can say that strings are not modifiable or immutable. +Primitive data types are compared by its values. Let us compare different data values. See the example below: + +```js +let numOne = 3 +let numTwo = 3 +console.log(numOne == numTwo) // true + +let js = 'JavaScript' +let py = 'Python' +console.log(js == py) //false + +let lightOn = true +let lightOff = false +console.log(lightOn == lightOff) // false +``` + +### Non-Primitive Data Types + +*Non-primitive* data types are modifiable or mutable. We can modify the value of non-primitive data types after it gets created. +Let us see by creating an array. An array is a list of data values in a square bracket. Arrays can contain the same or different data types. Array values are referenced by their index. In JavaScript array index starts at zero. I.e., the first element of an array is found at index zero, the second element at index one, and the third element at index two, etc. + +```js +let nums = [1, 2, 3] +nums[0] = 10 +console.log(nums) // [10, 2, 3] +``` + +As you can see, an array in which a non-primitive data type is mutable. Non-primitive data types can not be compared by value. Even if two non-primitive data types have the same properties and values, they are not strictly equal. + +```js +let nums = [1, 2, 3] +let numbers = [1, 2, 3] +console.log(nums == numbers) // false + +let userOne = { +name:'Asabeneh', +role:'teaching', +country:'Finland' +} +let userTwo = { +name:'Asabeneh', +role:'teaching', +country:'Finland' +} +console.log(userOne == userTwo) +``` + +Rule of thumb, we do not compare non-primitive data types. Do not compare array, function, or object. +Non-primitive values are referred to as reference types because they are being compared by reference instead of value. Two objects are only strictly equal if they refer to the same underlying object. + +```js +let nums = [1, 2, 3] +let numbers = nums +console.log(nums == numbers) // true + +let userOne = { +name:'Asabeneh', +role:'teaching', +country:'Finland' +} +let userTwo = userOne +console.log(userOne == userTwo) // true +``` + +If you have a hard time understanding the difference between primitive data types and non-primitive data types, you are not the only one. Calm down and just go to the next section and try to come back after some time. Now let us start the data types by number type. + +## Numbers + +Numbers are integers and decimal values which can do all the arithmetic operations. +Lets' see some examples of Numbers. + +### Declaring number data types + +```js +let age = 35 +const gravity = 9.81 //we use const for non-changing values, gravitational constant in m/s2 +let mass = 72 // mass in Kilogram +const PI = 3.14 // pi a geometrical constant + +//More Examples +const boilingPoint = 100 // temperature in oC, boiling point of water which is a constant +const bodyTemp = 37 // oC average human body temperature, which is a constant +console.log(age, gravity, mass, PI, boilingPoint, bodyTemp) +``` + +### Math Object + +In JavaScript the Math Object provides a lots of methods to work with numbers. + +```js +const PI = Math.PI +console.log(PI) // 3.141592653589793 +console.log(Math.round(PI)) // 3; to round values to the nearest number +console.log(Math.round(9.81)) // 10 +console.log(Math.floor(PI)) // 3; rounding down +console.log(Math.ceil(PI)) // 4; rounding up +console.log(Math.min(-5, 3, 20, 4,5, 10)) // -5, returns the minimum value +console.log(Math.max(-5, 3, 20, 4,5, 10)) // 20, returns the maximum value + +const randNum = Math.random() // creates random number between 0 to 0.999999 +console.log(randNum) +// Let create random number between 0 to 10 +const num = Math.floor(Math.random () * 11) // creates random number between 0 and 10 +console.log(num) + +//Absolute value +console.log(Math.abs(-10)) //10 +//Square root +console.log(Math.sqrt(100)) // 10 +console.log(Math.sqrt(2)) //1.4142135623730951 +// Power +console.log(Math.pow(3, 2)) // 9 +console.log(Math.E) // 2.718 + +// Logarithm +//Returns the natural logarithm of base E of x, Math.log(x) +console.log(Math.log(2)) // 0.6931471805599453 +console.log(Math.log(10)) // 2.302585092994046 + +// Trigonometry +Math.sin(0) +Math.sin(60) + +Math.cos(0) +Math.cos(60) +``` + +## Strings + +Strings are texts, which are under **_single_** or **_double_** quote. To declare a string, we need a variable name, assignment operator, a value under a single quote, double-quote, or backtick. +Lets' see some examples of string: + +```js +let space = ' ' // an empty space string +let firstName = 'Asabeneh' +let lastName = 'Yetayeh' +let country = 'Finland' +let city = 'Helsinki' +let language = 'JavaScript' +let job = 'teacher' +``` + +### String Concatenation + +Connect two or more strings together is called concatenation. + +```js +// Declaring different variables of different data types +let space = ' ' +let firstName = 'Asabeneh' +let lastName = 'Yetayeh' +let country = 'Finland' +let city = 'Helsinki' +let language = 'JavaScript' +let job = 'teacher' +``` + +```js +let fullName = firstName + space + lastName; // concatenation, merging two string together. +console.log(fullName); +``` + +```sh +// out +Asabeneh Yetayeh +``` + +We can concatenate string in different ways. + +#### Concatenating using addition operator + +Concatenating using the addition operator is an old way. This way of concatenating is tedious and error-prone. It is good to know how to concatenate this way, but I strongly suggest to use the second way. + +```js +// Declaring different variables of different data types +let space = ' ' +let firstName = 'Asabeneh' +let lastName = 'Yetayeh' +let country = 'Finland' +let city = 'Helsinki' +let language = 'JavaScript' +let job = 'teacher' +let age = 250 +let fullName = firstName + space + lastName +let personInfoOne = fullName + '. I am ' + age + '. I live in ' + country; // ES5 +console.log(personInfoOne) +``` + +```sh +Asabeneh Yetayeh. I am 250. I live in Finland +``` + +#### Long Literal Strings + +A string could be a single character or paragraph or a page. If the string length is too big it does not fit in one line. We can use the backslash character (\) at the end of each line to indicate that the string will continue on the next line. +**Example:** + +```js +const paragraph = "My name is Asabeneh Yetayeh. I live in Finland, Helsinki.\ +I am a teacher and I love teaching. I teach HTML, CSS, JavaScript, React, Redux, \ +Node.js, Python, Data Analysis and D3.js for anyone who is interested to learn. \ +In the end of 2019, I was thinking to expand my teaching and to reach \ +to global audience and I started a Python challenge from November 20 - December 19.\ +It was one of the most rewarding and inspiring experience.\ +Now, we are in 2020. I am enjoying preparing the 30DaysOfJavaScript challenge and \ +I hope you are enjoying too." +console.log(paragraph) +``` + +#### Escape Sequences in string + +In JavaScript and other programming language \ followed by some characters is an escape sequence. Let's see the most common escape characters: + +- \n: new line +- \t: Tab means(8 spaces) +- \\\\: Back slash +- \\': Single quote (') +- \\":Double quote (") + +```js +console.log('I hope every one is enjoying the 30 Days Of JavaScript challenge.\nDo you ?') // line break +console.log('Days\tTopics\tExercises') +console.log('Day 1\t3\t5') +console.log('Day 2\t3\t5') +console.log('Day 3\t3\t5') +console.log('Day 4\t3\t5') +console.log('This is a back slash symbol (\\)') // To write a back slash +console.log('In every programming language it starts with \"Hello, World!\"') +console.log("In every programming language it starts with \'Hello, World!\'") +console.log('The saying \'Seeing is Believing\' is\'t correct in 2020') +``` + +#### Template Literals(Template Strings) + +To create a template string, we use two backticks. We can inject data as expression inside a template string. To inject data, we enclose the expression with a curly bracket({}) followed by a $ sign. See the syntax below. + +```js +//Syntax +`String literal text` +`String literal text ${expression}` +``` + +**Example: 1** + +```js +console.log(`The sum of 2 and 3 is 5`) +let a = 2 +let b = 3 +console.log(`The sum of ${a} and ${b} is ${a + b}`) +``` + +**Example:2** + +```js +let firstName = 'Asabeneh' +let lastName = 'Yetayeh' +let country = 'Finland' +let city = 'Helsinki' +let language = 'JavaScript' +let job = 'teacher' +let age = 250 +let fullName = firstName + ' ' + lastName + +let personInfoTwo = `I am ${fullName}. I am ${age}. I live in ${country}.` //ES6 - String interpolation method +let personInfoThree = `I am ${fullName}. I live in ${city}, ${country}. I am a ${job}. I teach ${language}.` +console.log(personInfoTwo) +console.log(personInfoThree) +``` + +```sh +I am Asabeneh Yetayeh. I am 250. I live in Finland. +I am Asabeneh Yetayeh. I live in Helsinki, Finland. I am a teacher. I teach JavaScript. +``` + +Using a string template or string interpolation method, we can add expression, which could be a value or some operations(comparison, arithmetic operations, ternary operation). + +```js +let a = 2 +let b = 3 +console.log(`${a} is greater than ${b}: ${a > b}`) +``` + +```sh +2 is greater than 3: false +``` + +### String Methods + +Everything in JavaScript is an object. A string is a primitive data type that means we can not modify once it is created. The string object has many string methods. There are different string methods that can help us to work with strings. + +1. *length*: The string *length* method returns the number of characters in a string included empty space. + **Example:** + + ```js + let js = 'JavaScript' + console.log(js.length) // 10 + let firstName = 'Asabeneh' + console.log(firstName.length) // 8 + ``` + +2. *Accessing characters in a string*: We can access each character in a string using its index. In programming, counting starts from 0. The first index of the string is zero, and the last index is one minus the length of the string. + + ![Accessing sting by index](./images/string_indexes.png) + +Let us access different characters in 'JavaScript' string. + +```js +let string = 'JavaScript' +let firstLetter = string[0] +console.log(firstLetter) // J +let secondLetter = string[1] // a +let thirdLetter = string[2] +let lastLetter = string[9] +console.log(lastLetter) // t +let lastIndex = string.length - 1 +console.log(lastIndex) // 9 +console.log(string[lastIndex]) // t +``` + +1. *toUpperCase()*: this method changes the string to uppercase letters. + +```js +let string = 'JavaScript' +console.log(string.toUpperCase()) // JAVASCRIPT +let firstName = 'Asabeneh' +console.log(firstName.toUpperCase()) // ASABENEH +let country = 'Finland' +console.log(country.toUpperCase()) // FINLAND +``` + +4. *toLowerCase()*: this method changes the string to lowercase letters. + +```js +let string = 'JavasCript' +console.log(string.toLowerCase()) // javascript +let firstName = 'Asabeneh' +console.log(firstName.toLowerCase()) // asabeneh +let country = 'Finland' +console.log(country.toLowerCase()) // finland +``` + +5. *substr()*: It takes two arguments, the starting index and number of characters to slice. + +```js +let string = 'JavaScript' +console.log(string.substr(4,6)) // Script +let country = 'Finland' +console.log(country.substr(3, 4)) // land +``` + +6. *substring()*: It takes two arguments, the starting index and the stopping index but it doesn't include the stopping index. + +```js +let string = 'JavaScript' +console.log(string.substring(0,4)) // Java +console.log(string.substring(4,10)) // Script +console.log(string.substring(4)) // Script +let country = 'Finland' +console.log(country.substring(0, 3)) // Fin +console.log(country.substring(3, 7)) // land +console.log(country.substring(3)) // land +``` + +7. *split()*: The split method splits a string at a specified place. + +```js +let string = '30 Days Of JavaScipt' +console.log(string.split()) // ["30 Days Of JavaScript"] +console.log(string.split(' ')) // ["30", "Days", "Of", "JavaScript"] +let firstName = 'Asabeneh' +console.log(firstName.split()) // ["Asabeneh"] +console.log(firstName.split('')) // ["A", "s", "a", "b", "e", "n", "e", "h"] +let countries = 'Finland, Sweden, Norway, Denmark, and Iceland' +console.log(countries.split(',')) // ["Finland", " Sweden", " Norway", " Denmark", " and Iceland"] +console.log(countries.split(', ')) //  ["Finland", "Sweden", "Norway", "Denmark", "and Iceland"] +``` + +8. *trim()*: Removes trailing space in the beginning or the end of a string. + +```js +let string = ' 30 Days Of JavaScript ' +console.log(string) +console.log(string.trim(' ')) // +let firstName = ' Asabeneh ' +console.log(firstName) +console.log(firstName.trim()) // +``` + +```sh + 30 Days Of JavasCript +30 Days Of JavasCript + Asabeneh +Asabeneh +``` + +9. *includes()*: It takes a substring argument and it check if substring argument exists in the string. *includes()* returns a boolean. It checks if a substring exist in a string and it returns true if it exists and false if it doesn't exist. + +```js +let string = '30 Days Of JavaScript' +console.log(string.includes('Days')) // true +console.log(string.includes('days')) // false +console.log(string.includes('Script')) // true +console.log(string.includes('script')) // false +console.log(string.includes('java')) // false +console.log(string.includes('Java')) // true + +let country = 'Finland' +console.log(country.includes('fin')) // false +console.log(country.includes('Fin')) // true +console.log(country.includes('land')) // true +console.log(country.includes('Land')) // false +``` + +10. *replace()*: takes to parameter the old substring and new substring. + +```js +string.replace(oldsubstring, newsubstring) +``` + +```js +let string = '30 Days Of JavaScript' +console.log(string.replace('JavaScript', 'Python')) // 30 Days Of Python +let country = 'Finland' +console.log(country.replace('Fin', 'Noman')) // Nomanland +``` + +11. *charAt()*: Takes index and it returns the value at that index + +```js +string.charAt(index) +``` + +```js +let string = '30 Days Of JavaScript' +console.log(string.charAt(0)) // 3 +let lastIndex = string.length - 1 +console.log(string.charAt(lastIndex)) // t +``` + +12. *charCodeAt()*: Takes index and it returns char code(ASCII number) of the value at that index + +```js +string.charCodeAt(index) +``` + +```js +let string = '30 Days Of JavaScript' +console.log(string.charCodeAt(3)) // D ASCII number is 51 +let lastIndex = string.length - 1 +console.log(string.charCodeAt(lastIndex)) // t ASCII is 116 + +``` + +13. *indexOf()*: Takes takes a substring and if the substring exists in a string it returns the first position of the substring if does not exist it returns -1 + +```js +string.indexOf(substring) +``` + +```js +let string = '30 Days Of JavaScript' +console.log(string.indexOf('D')) // 3 +console.log(string.indexOf('Days')) // 3 +console.log(string.indexOf('days')) // -1 +console.log(string.indexOf('a')) // 4 +console.log(string.indexOf('JavaScript')) // 11 +console.log(string.indexOf('Script')) //15 +console.log(string.indexOf('script')) // -1 +``` + +14. *lastIndexOf()*: Takes takes a substring and if the substring exists in a string it returns the last position of the substring if it does not exist it returns -1 + +```js +string.lastIndexOf(index) +``` + +```js +let string = 'I love JavaScript. If you do not love JavaScript what else can you love.' +console.log(string.lastIndexOf('love')) // 67 +console.log(string.lastIndexOf('you')) // 63 +console.log(string.lastIndexOf('JavaScript')) // 38 +``` + +15. *concat()*: it takes many substrings and creates concatenation. + +```js +string.concat(substring, substring, substring) +``` + +```js +let string = '30' +console.log(string.concat("Days", "Of", "JavaScript")) // 30DaysOfJavaScript +let country = 'Fin' +console.log(country.concat("land")) // Finland +``` + +16. *startsWith*: it takes a substring as an argument and it checks if the string starts with that specified substring. It returns a boolean(true or false). + +```js +//syntax +string.startsWith(substring) +``` + +```js +let string = 'Love is the best to in this world' +console.log(string.startsWith('Love')) // true +console.log(string.startsWith('love')) // false +console.log(string.startsWith('world')) // false + +let country = 'Finland' +console.log(country.startsWith('Fin')) // true +console.log(country.startsWith('fin')) // false +console.log(country.startsWith('land')) // false +``` + +17. *endsWith*: it takes a substring as an argument and it checks if the string starts with that specified substring. It returns a boolean(true or false). + +```js +string.endsWith(substring) +``` + +```js +let string = 'Love is the best to in this world' +console.log(string.endsWith('world')) // true +console.log(string.endsWith('love')) // false +console.log(string.endsWith('in this world')) // true + +let country = 'Finland' +console.log(country.endsWith('land')) // true +console.log(country.endsWith('fin')) // false +console.log(country.endsWith('Fin')) // false +``` + +18. *search*: it takes a substring as an argument and it returns the index of the first match. + +```js +string.search(substring) +``` + +```js +let string = 'I love JavaScript. If you do not love JavaScript what else can you love.' +console.log(string.search('love')) // 2 +``` + +19. *match*: it takes a substring or regular expression pattern as an argument and it returns an array if there is match if not it returns null. Let us see how a regular expression pattern looks like. It starts with / sign and ends with / sign. + +```js +let string = 'love' +let patternOne = /love/ // with out any flag +let patternTwo = /love/gi // g-means to search in the whole text, i - case insensitive +``` + +```js +string.match(substring) +``` + +```js +let string = 'I love JavaScript. If you do not love JavaScript what else can you love.' +console.log(string.match('love')) // +/* +output + +["love", index: 2, input: "I love JavaScript. If you do not love JavaScript what else can you love.", groups: undefined] +*/ +let pattern = /love/gi +console.log(string.match(pattern)) // ["love", "love", "love"] +``` + +Let us extract numbers from text using regular expression. This is not regular expression section, no panic. + +```js +let txt = 'In 2019, I run 30 Days of Pyhton. Now, in 2020 I super exited to start this challenge' +let regEx = /\d+/ // d with escape character means d not a normal d instead acts a digit +// + means one or more digit numbers, +// if there is g after that it means global, search everywhere. +console.log(txt.match(regEx)) // ["2", "0", "1", "9", "3", "0", "2", "0", "2", "0"] +console.log(txt.match(/\d+/g)) // ["2019", "30", "2020"] +``` + +20. *repeat()*: it takes a number argument and it returned the repeated version of the string. + +```js +string.repeat(n) +``` + +```js +let string = 'love' +console.log(string.repeat(10)) // lovelovelovelovelovelovelovelovelovelove +``` + +# 💻 Day 2: Exercises + +## Exercises: String Part + +1. Declare a variable name challenge and assign it to an initial value **'30 Days Of JavaScript'**. +2. Print the string on the browser console using __console.log()__ +3. Print the __length__ of the string on the browser console using _console.log()_ +4. Change all the string to capital letters using __toUpperCase()__ method +5. Change all the string to lowercase letters using __toLowerCase()__ method +6. Cut(slice) out the first word of the string using __substr()__ or __substring()__ method +7. Slice out the phrase *Days Of JavaScript* from *30 Days Of JavaScript*. +8. Use __substr__ to slice out the phase __because because because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ +9. Check if the string contains a word __Script__ using __includes()__ method +10. Split the __string__ into __array__ using __split()__ method +11. Split the string 30 Days Of JavaScript at the space using __split()__ method +12. 'Facebook, Google, Microsoft, Apple, IBM, Oracle, Amazon' __split__ the string at the comma and change it to an array. +13. Change 30 Days Of JavaScript to 30 Days Of Python using __replace()__ method. +14. What is character at index 15 in '30 Days Of JavaScript' string use __charAt()__ method. +15. What is the character code of J in '30 Days Of JavaScript' string using __charCodeAt()__ +16. Use __indexOf__ to determine the position of the first occurrence of a in 30 Days Of JavaScript +17. Use __lastIndexOf__ to determine the position of the last occurrence of a in 30 Days Of JavaScript. +18. Use __indexOf__ to find the position of the first occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ +19. Use __lastIndexOf__ to find the position of the last occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ +20. Use __search__ to find the position of the first occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ +21. Use __trim()__ to remove if there is trailing whitespace at the beginning and the end of a string.E.g ' 30 Days Of JavaScript '. +22. Use __startsWith()__ method with the string *30 Days Of JavaScript* make the result true +23. Use __endsWith()__ method with the string *30 Days Of JavaScript* make the result true +24. Use __match()__ method to find all the a’s in 30 Days Of JavaScript +25. Use __match()__ to count the number all because's in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ +26. Use __concat()__ and merge '30 Days of' and 'JavaScript' to a single string, '30 Days Of JavaScript' +27. Use __repeat()__ method to print 30 Days Of JavaScript 2 times +28. Love is the best thing in this world. Some found their love and some are still looking for their love. Count the number of word love in this sentence. +29. Calculate the total annual income of the person by extract the numbers from the following text. 'He earns 5000 euro from salary per month, 10000 euro annual bonus, 15000 euro online courses per month.' +30. Clean the following text and find the most frequent word(hint, use replace and regular express). + +```js + const sentence = '%I $am@% a %tea@cher%, &and& I lo%#ve %tea@ching%;. There $is nothing; &as& mo@re rewarding as educa@ting &and& @emp%o@wering peo@ple. ;I found tea@ching m%o@re interesting tha@n any other %jo@bs. %Do@es thi%s mo@tivate yo@u to be a tea@cher!? %Th#is 30#Days&OfJavaScript &is also $the $result of &love& of tea&ching' +``` + +31. Using console.log() print out the following statement. + +```sh +The quote 'There is no exercise better for the heart than reaching down and lifting people up.' by John Holmes teaches us to help to one another. +``` + +32. Using console.log() print out the following quote by Mother Teresa. + +```sh +"Love is not patronizing and charity isn't about pity, it is about love. Charity and love are the same -- with charity you give love, so don't just give money but reach out your hand instead." +``` + +[<< Day 1](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/readMe.md) | [Day 3 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/03_Day/03_booleans_operators_date.md) diff --git a/02-Day/index.html b/02_Day/index.html similarity index 100% rename from 02-Day/index.html rename to 02_Day/index.html diff --git a/02-Day/main.js b/02_Day/main.js similarity index 100% rename from 02-Day/main.js rename to 02_Day/main.js diff --git a/02-Day/math_object.js b/02_Day/math_object.js similarity index 100% rename from 02-Day/math_object.js rename to 02_Day/math_object.js diff --git a/02-Day/non_primitive_data_types.js b/02_Day/non_primitive_data_types.js similarity index 100% rename from 02-Day/non_primitive_data_types.js rename to 02_Day/non_primitive_data_types.js diff --git a/02-Day/number_data_types.js b/02_Day/number_data_types.js similarity index 100% rename from 02-Day/number_data_types.js rename to 02_Day/number_data_types.js diff --git a/02-Day/primitive_data_types.js b/02_Day/primitive_data_types.js similarity index 100% rename from 02-Day/primitive_data_types.js rename to 02_Day/primitive_data_types.js diff --git a/02-Day/string_concatenation.js b/02_Day/string_concatenation.js similarity index 100% rename from 02-Day/string_concatenation.js rename to 02_Day/string_concatenation.js diff --git a/02-Day/string_data_types.js b/02_Day/string_data_types.js similarity index 100% rename from 02-Day/string_data_types.js rename to 02_Day/string_data_types.js diff --git a/02-Day/string_methods/accessing_character.js b/02_Day/string_methods/accessing_character.js similarity index 100% rename from 02-Day/string_methods/accessing_character.js rename to 02_Day/string_methods/accessing_character.js diff --git a/02-Day/string_methods/char_at.js b/02_Day/string_methods/char_at.js similarity index 100% rename from 02-Day/string_methods/char_at.js rename to 02_Day/string_methods/char_at.js diff --git a/02-Day/string_methods/char_code_at.js b/02_Day/string_methods/char_code_at.js similarity index 100% rename from 02-Day/string_methods/char_code_at.js rename to 02_Day/string_methods/char_code_at.js diff --git a/02-Day/string_methods/concat.js b/02_Day/string_methods/concat.js similarity index 100% rename from 02-Day/string_methods/concat.js rename to 02_Day/string_methods/concat.js diff --git a/02-Day/string_methods/ends_with.js b/02_Day/string_methods/ends_with.js similarity index 100% rename from 02-Day/string_methods/ends_with.js rename to 02_Day/string_methods/ends_with.js diff --git a/02-Day/string_methods/includes.js b/02_Day/string_methods/includes.js similarity index 100% rename from 02-Day/string_methods/includes.js rename to 02_Day/string_methods/includes.js diff --git a/02-Day/string_methods/index_of.js b/02_Day/string_methods/index_of.js similarity index 100% rename from 02-Day/string_methods/index_of.js rename to 02_Day/string_methods/index_of.js diff --git a/02-Day/string_methods/last_index_of.js b/02_Day/string_methods/last_index_of.js similarity index 100% rename from 02-Day/string_methods/last_index_of.js rename to 02_Day/string_methods/last_index_of.js diff --git a/02-Day/string_methods/length.js b/02_Day/string_methods/length.js similarity index 100% rename from 02-Day/string_methods/length.js rename to 02_Day/string_methods/length.js diff --git a/02-Day/string_methods/match.js b/02_Day/string_methods/match.js similarity index 100% rename from 02-Day/string_methods/match.js rename to 02_Day/string_methods/match.js diff --git a/02-Day/string_methods/repeat.js b/02_Day/string_methods/repeat.js similarity index 100% rename from 02-Day/string_methods/repeat.js rename to 02_Day/string_methods/repeat.js diff --git a/02-Day/string_methods/replace.js b/02_Day/string_methods/replace.js similarity index 100% rename from 02-Day/string_methods/replace.js rename to 02_Day/string_methods/replace.js diff --git a/02-Day/string_methods/search.js b/02_Day/string_methods/search.js similarity index 100% rename from 02-Day/string_methods/search.js rename to 02_Day/string_methods/search.js diff --git a/02-Day/string_methods/split.js b/02_Day/string_methods/split.js similarity index 100% rename from 02-Day/string_methods/split.js rename to 02_Day/string_methods/split.js diff --git a/02-Day/string_methods/starts_with.js b/02_Day/string_methods/starts_with.js similarity index 100% rename from 02-Day/string_methods/starts_with.js rename to 02_Day/string_methods/starts_with.js diff --git a/02-Day/string_methods/substr.js b/02_Day/string_methods/substr.js similarity index 100% rename from 02-Day/string_methods/substr.js rename to 02_Day/string_methods/substr.js diff --git a/02-Day/string_methods/substring.js b/02_Day/string_methods/substring.js similarity index 100% rename from 02-Day/string_methods/substring.js rename to 02_Day/string_methods/substring.js diff --git a/02-Day/string_methods/to_lowercase.js b/02_Day/string_methods/to_lowercase.js similarity index 100% rename from 02-Day/string_methods/to_lowercase.js rename to 02_Day/string_methods/to_lowercase.js diff --git a/02-Day/string_methods/to_uppercase.js b/02_Day/string_methods/to_uppercase.js similarity index 100% rename from 02-Day/string_methods/to_uppercase.js rename to 02_Day/string_methods/to_uppercase.js diff --git a/02-Day/string_methods/trim.js b/02_Day/string_methods/trim.js similarity index 100% rename from 02-Day/string_methods/trim.js rename to 02_Day/string_methods/trim.js diff --git a/03_Day/03_booleans_operators_date.md b/03_Day/03_booleans_operators_date.md new file mode 100644 index 0000000..c2f1d9b --- /dev/null +++ b/03_Day/03_booleans_operators_date.md @@ -0,0 +1,565 @@ +## Table of Contents + +![Thirty Days Of JavaScript](./images/30DaysOfJavaScript.png) + +- [📔 Day 3](#%f0%9f%93%94-day-3) + - [Booleans](#booleans) + - [Truthy values](#truthy-values) + - [Falsy values](#falsy-values) + - [Undefined](#undefined) + - [Null](#null) + - [Operators](#operators) + - [Assignment operators](#assignment-operators) + - [Arithmetic Operators](#arithmetic-operators) + - [Comparison Operators](#comparison-operators) + - [Logical Operators](#logical-operators) + - [Increment Operator](#increment-operator) + - [Decrement Operator](#decrement-operator) + - [Ternary Operators](#ternary-operators) + - [Operator Precendence](#operator-precendence) + - [Window Methods](#window-methods) + - [Window alert() method](#window-alert-method) + - [Window prompt() method](#window-prompt-method) + - [Window confirm() method](#window-confirm-method) + - [Date Object](#date-object) + - [Creating a time object](#creating-a-time-object) + - [Getting full year](#getting-full-year) + - [Getting month](#getting-month) + - [Getting date](#getting-date) + - [Getting day](#getting-day) + - [Getting hours](#getting-hours) + - [Getting minutes](#getting-minutes) + - [Getting seconds](#getting-seconds) + - [Getting time](#getting-time) +- [💻 Day 3: Exercises](#%f0%9f%92%bb-day-3-exercises) + - [1. Exercises: Data types Part](#1-exercises-data-types-part) + - [2. Exercises: Arithmetic Operators Part](#2-exercises-arithmetic-operators-part) + - [3. Exercises: Booleans Part](#3-exercises-booleans-part) + - [4. Exercises: Comparison Operators](#4-exercises-comparison-operators) + - [5. Exercises: Logical Operators](#5-exercises-logical-operators) + - [6 Ternary Operator](#6-ternary-operator) + - [7. Exercises: Date time Object](#7-exercises-date-time-object) + +# 📔 Day 3 + +## Booleans + +A boolean data type represents one of the two values:_true_ or _false_. Boolean value is either true or false. The use of these data types will be clear when you start the comparison operator. Any comparisons return a boolean value which is either true or false. + +**Example: Boolean Values** + +```js +let isLightOn = true; +let isRaining = false; +let isHungry = false; +let isMarried = true; +let truValue = 4 > 3 // true +let falseValue = 3 < 4 // false +``` + +We agreed that boolean values are either true or false. + +### Truthy values + +- All numbers(positive and negative) are truthy except zero +- All strings are truthy +- The boolean true + +### Falsy values + +- 0 +- 0n +- null +- undefined +- NaN +- the boolean false +- '', "", ``, empty string + +It is good to remember those truthy values and falsy values. In later section, we will use them with conditions to make decision. + +## Undefined + +If we declare a variable and if we do not assign a value, the value will be undefined. In addition to this, if a function is not returning the value will be undefined. + +```js +let firstName; +console.log(firstName); //not defined, because it is not assigned to a value yet +``` + +## Null + +```js +let empty = null; +console.log(empty); // -> null , means no value +``` + +## Operators + +### Assignment operators + +An equal sign in JavaScript is an assignment operator. It uses to assign a variable. + +```js +let firstName = 'Asabeneh' +let country = 'Finland' +``` + +Assignment Operators + +![Assignment operators](images/assignment_operators.png) + +### Arithmetic Operators + +Arithmetic operators are mathematical operators. + +- Addition(+): a + b +- Subtraction(-): a - b +- Multiplication(*): a * b +- Division(/): a / b +- Modulus(%):a % b +- Exponential(**):a ** b + +```js +let numOne = 4; +let numTwo = 3; +let sum = numOne + numTwo; +let diff = numOne - numTwo; +let mult = numOne * numTwo; +let div = numOne / numTwo; +let remainder = numOne % numTwo; +let powerOf = numOne ** numTwo +console.log(sum, diff, mult, div, remainder, powerOf); // ->7,1,12,1.33,1, 64 + +let PI = 3.14; +let radius = 100; // length in meter + +const gravity = 9.81; // in m/s2 +let mass = 72; // in Kilogram +const boilingPoint = 100; // temperature in oC, boiling point of water +const bodyTemp = 37; // body temperature in oC + +//Let us calculate area of a circle +const areaOfCircle = PI * radius * radius; +console.log(areaOfCircle); // -> 314 m +// Let us calculate weight of an object +const weight = mass * gravity; +console.log(weight); // -> 706.32 N(Newton) + +//Concatenating string with numbers using string interpolation +/* + The boiling point of water is 100 oC. + Human body temperature is 37 oC. + The gravity of earth is 9.81 m/s2. + */ +console.log( + `The boiling point of water is ${boilingPoint} oC.\nHuman body temperature is ${bodyTemp} oC.\nThe gravity of earth is ${gravity} m / s2.` +); +``` + +### Comparison Operators + +In programming we compare values, we use comparison operators to compare two values. We check if a value is greater or less or equal to other value. + +![Comparison Operators](./images/comparison_operators.png) +**Example: Comparison Operators** + +```js +console.log(3 > 2) // true, because 3 is greater than 2 +console.log(3 >= 2) // true, because 3 is greater than 2 +console.log(3 < 2) // false, because 3 is greater than 2 +console.log(2 < 3) // true, because 2 is less than 3 +console.log(2 <= 3) // true, because 2 is less than 3 +console.log(3 == 2) // false, because 3 is not equal to 2 +console.log(3 != 2) // true, because 3 is not equal to 2 +console.log(3 == '3') // true, compare only value +console.log(3 === '3') // false, compare both value and data type +console.log(3 !== '3') // true, compare both value and data type +console.log(3 !== '3') // true, compare both value and data type +console.log(3 != 3) // false, compare only value +console.log(3 !== 3) // false, compare both value and data type + +console.log('mango'.length == 'avocado'.length) // false +console.log('mango'.length != 'avocado'.length) // true +console.log('mango'.length < 'avocado'.length) // true +console.log('milk'.length != 'meat'.length) // false +console.log('milk'.length == 'meat'.length) // true +console.log('tomato'.length == 'potato'.length) // true +console.log('python'.length > 'dragon'.length) // false +``` + +### Logical Operators + +The following symbols are the common logical operators: +&&(ampersand) , ||(pipe) and !(negation). +&& gets true only if the two operands are true. +|| gets true either of the operand is true. +! negates true to false, false to true. + +```js +//&& ampersand example +const check = 4 > 3 && 10 > 5; // true and true -> true +const check = 4 > 3 && 10 < 5; // true and false -> false +const check = 4 < 3 && 10 < 5; // false and false -> false +//|| pipe or, example +const check = 4 > 3 || 10 > 5; // true and true -> true +const check = 4 > 3 || 10 < 5; // true and false -> true +const check = 4 < 3 || 10 < 5; // false and false -> false +//! Negation examples +let check = 4 > 3; // -> true +let check = !(4 > 3); // -> false +let isLightOn = true; +let isLightOff = !isLightOn; // -> false +let isMarried = !false; // -> true +``` + +### Increment Operator + +In JavaScrip we use the increment operator to increase a value stored in a variable. The increment could be pre or post increment. Let us see each of them: + +1. Pre-increment + +```js +let count = 0 +console.log(++count) // 1 +console.log(count) // 1 +``` + +1. Post-increment + +```js +let count = 0 +console.log(count++) // 0 +console.log(count) // 1 +``` + +We use most of the time post-increment. At leas you should remember how to use post-increment operator. + +### Decrement Operator + +In JavaScrip we use the decrement operator to decrease a value stored in a variable. The decrement could be pre or post decrement. Let us see each of them: + +1. Pre-decrement + +```js +let count = 0 +console.log(--count) // -1 +console.log(count) // -1 +``` + +2. Post-decrement + +```js +let count = 0 +console.log(count--) // 0 +console.log(count) // -1 +``` + +#### Ternary Operators + +Ternary operator allows to write a condition. +Another way to write conditionals is using ternary operators. Look at the following examples: + +```js +let isRaining = true +isRaining + ? console.log('You need a rain coat.') + : console.log('No need for a rain coat.'); +isRaining = false + +isRaining + ? console.log('You need a rain coat.') + : console.log('No need for a rain coat.'); +``` + +```sh +You need a rain coat. +No need for a rain coat. +``` + +```js +let number = 5 +number > 0 + ? console.log(`${number} is a positive number`) + : console.log(`${number} is a number number`); +number = -5 + +number > 0 + ? console.log(`${number} is a positive number`) + : console.log(`${number} is a number number`); +``` + +```sh +5 is a positive number +-5 is a number number +``` + +### Operator Precendence + +I would like to recommend you to read about operator precendence from this [link](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence) + +## Window Methods + +### Window alert() method + +As you have seen at very beginning alert() method displays an alert box with a specified message and an OK button. It is a builtin method and it takes on argument. + +```js +alert(message) +``` + +```js +alert('Welcome to 30DaysOfJavaScript') +``` + +Do not use too much alert because it is destructing and annoying, use it just for to test. + +### Window prompt() method + +The window prompt methods display a prompt box with an input on your browser to take input values and the input data can be stored in a variable. The prompt() method takes two arguments. The second argument is optional. + +```js +prompt('required text', 'optional text') +``` + +```js +let number = prompt('Enter number', 'number goes here') +console.log(number) +``` + +### Window confirm() method + +The confirm() method displays a dialog box with a specified message, along with an OK and a Cancel button. +A confirm box is often used to ask permission from a user to do something. Window confirm() takes an string as an argument. +Clicking the OK yields true value, clicking the Cancel yields true value. + +```js +const agree = confirm('Are you sure you like to delete? ') +console.log(agree) // result will be true or false based on what you click on the dialog box +``` + +These are not all the window methods we will have a separate section to go deep into window methods. + +## Date Object + +Time is an important thing. We like to know the time a certain activity or event. In JavaScript current time and date is created using JavaScript Date Object. The object we create using Date object provides many methods to work with date and time.The methods we use to get date and time information from a date object values are started with a word _get_ because it provide the information. +_getFullYear(), getMonths(), getDate(), getDay(), getHours(), getMinutes, getSeconds(), getMilliseconds(), getTime(), getDay()_ + +![Date time Object](images/date_time_object.png) + +### Creating a time object + +Once we create time object. The time object will provide information about time. Let us create a time object + +```js +const now = new Date () +console.log(now) // Sat Jan 04 2020 00:56:41 GMT+0200 (Eastern European Standard Time) +``` + +We have created a time object and we can access any date time information from the object using the get methods we have mentioned on the table. + +### Getting full year + +Let's extract or get the full from a time object. + +```js +const now = new Date () +console.log(now.getFullYear()) // 2020 +``` + +### Getting month + +Let's extract or get the month from a time object. + +```js +const now = new Date () +console.log(now.getMonth()) // 0, because the month is January, month(0-11) +``` + +### Getting date + +Let's extract or get the date of the month from a time object. + +```js +const now = new Date () +console.log(now.getDate()) // 4, because the day of the month is 4th, day(0-31) +``` + +### Getting day + +Let's extract or get the day of the week from a time object. + +```js +const now = new Date () +console.log(now.getDay()) // 6, because the day is Saturday which is the 5th day, +// Getting the weekday as a number (0-6) +``` + +### Getting hours + +Let's extract or get the hours from a time object. + +```js +const now = new Date () +console.log(now.getHours()) // 0, because the time is 00:56:41 +``` + +### Getting minutes + +Let's extract or get the minutes from a time object. + +```js +const now = new Date () +console.log(now.getMinutes()) // 56, because the time is 00:56:41 +``` + +### Getting seconds + +Let's extract or get the seconds from a time object. + +```js +const now = new Date () +console.log(now.getSeconds()) // 41, because the time is 00:56:41 +``` + +### Getting time + +This method give time in milliseconds starting from January 1, 1970. It is also know as Unix time. We can get the unix time in two ways: + +1. Using *getTime()* + +```js +const now = new Date () // +console.log(now.getTime()) // 1578092201341, this is the number of seconds passed from January 1, 1970 to January 4, 2020 00:56:41 +``` + +1. Using *Date.now()* + +```js +const allSeconds = Date.now () // +console.log(allSeconds) // 1578092201341, this is the number of seconds passed from January 1, 1970 to January 4, 2020 00:56:41 +const timeInSeconds = new Date ().getTime() +console.log(allSeconds == timeInSeconds) // true +``` + +Let us format these values to a human readable time format. +**Example:** + +```js +const now = new Date (); +const year = now.getFullYear(); // return year +const month = now.getMonth() + 1; // return month(0 - 11) +const date = now.getDate(); // return date (1 - 31) +const hours = now.getHours(); // return number (0 - 23) +const minutes = now.getMinutes();// return number (0 -59) +console.log(`${date}/${month}/${year} ${hours}:${minutes}`) // 4/1/2020 0:56 +``` + +# 💻 Day 3: Exercises + +## 1. Exercises: Data types Part + +1. Declare firstName, lastName, country, city, age, isMarried, year variable and assign value to it + +1. The JavaScript typeof operator uses to check different data types. Check the data type of each variables from question number 1. + +## 2. Exercises: Arithmetic Operators Part + +JavaScript arithmetic operators are addition(+), subtraction(-), multiplication(*), division(/), modulus(%), exponential(**), increment(++) and decrement(--). + +```js +let operandOne = 4; +let operandTwo = 3; +``` + +Using the above operands apply different JavaScript arithmetic operations. + +## 3. Exercises: Booleans Part + +Boolean value is either true or false. + +1. Write three JavaScript statement which provide truthy value. +1. Write three JavaScript statement which provide falsy value. + +## 4. Exercises: Comparison Operators + +Figure out the result of the following comparison expression first without using console.log(). After you decide the result confirm it using console.log() + +1. 4 > 3 +1. 4 >= 3 +1. 4 < 3 +1. 4 <= 3 +1. 4 == 4 +1. 4 === 4 +1. 4 != 4 +1. 4 !== 4 +1. 4 != '4' +1. 4 == '4' +1. 4 === '4' + +## 5. Exercises: Logical Operators + +Figure out the result of the following expressions first without using console.log(). After you decide the result confirm it by using console.log() + +1. 4 > 3 && 10 < 12 +1. 4 > 3 && 10 > 12 +1. 4 > 3 || 10 < 12 +1. 4 > 3 || 10 > 12 +1. !(4 > 3) +1. !(4 < 3) +1. !(false) +1. !(4 > 3 && 10 < 12) +1. !(4 > 3 && 10 > 12) +1. !(4 === '4') + +## 6 Ternary Operator + +1. If the length of your name is greater than 7 say, your name is long else say your name is short. +1. Compare your first name length and your family name length and you should get this output. + +```js +let firstName = 'Asabeneh' +let lastName = 'Yetayeh +``` + +```sh +//Output +Your first name, Asabeneh is longer than your family name, Yetayeh +``` + +1. Declare two variables _myAge_ and _yourAge_ and assign them initial values and myAge and yourAge. + Output: + + ```js + let myAge = 250 + let yourAge = 25 + ``` + + ```sh + //output + I am 225 years older than you. + ``` + +1. Using prompt get the year the user was born and if the user is 18 or above allow the user to drive if not tell the user to wait a certain amount of years. + +```js +// if the age is 25 +You are 25. You are old enough to drive +// if the age is under 18 + You are 15. You will be allowed to drive after 3 years. +``` + +## 7. Exercises: Date time Object + +1. What is the year today? +1. What is the month today as a number? +1. What is the date today? +1. What is the day today as a number? +1. What is the hours now? +1. What is the minutes now? +1. Find out the numbers of seconds elapsed from January 1, 1970 to now. +1. Create a human readable time format + 1. YYY-MM-DD HH:mm:ss + 2. DD-MM-YYYY HH:mm:ss + 3. DD/MM/YYY HH:mm:ss + +[<< Day 2]((https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_strings.md)) | [Day 4 >>](#) \ No newline at end of file diff --git a/readMe.md b/readMe.md index 473e2d9..236ee65 100644 --- a/readMe.md +++ b/readMe.md @@ -1,6 +1,7 @@ ## Table of Contents ![Thirty Days Of JavaScript](./images/30DaysOfJavaScript.png) +[Day 2 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_strings.md) - [📔Day 1](#%f0%9f%93%94day-1) - [Introduction](#introduction) @@ -34,60 +35,6 @@ - [Comments](#comments) - [Variables](#variables) - [💻 Day 1: Exercises](#%f0%9f%92%bb-day-1-exercises) -- [📔 Day 2](#%f0%9f%93%94-day-2) - - [Data types](#data-types) - - [Primitive Data Types](#primitive-data-types) - - [Non-Primitive Data Types](#non-primitive-data-types) - - [Numbers](#numbers) - - [Declaring number data types](#declaring-number-data-types) - - [Math Object](#math-object) - - [Strings](#strings) - - [String Concatenation](#string-concatenation) - - [Concatenating using addition operator](#concatenating-using-addition-operator) - - [Long Literal Strings](#long-literal-strings) - - [Escape Sequences in string](#escape-sequences-in-string) - - [Template Literals(Template Strings)](#template-literalstemplate-strings) - - [String Methods](#string-methods) -- [💻 Day 2: Exercises](#%f0%9f%92%bb-day-2-exercises) - - [Exercises: String Part](#exercises-string-part) -- [📔 Day 3](#%f0%9f%93%94-day-3) - - [Booleans](#booleans-1) - - [Truthy values](#truthy-values) - - [Falsy values](#falsy-values) - - [Undefined](#undefined-1) - - [Null](#null-1) - - [Operators](#operators) - - [Assignment operators](#assignment-operators) - - [Arithmetic Operators](#arithmetic-operators) - - [Comparison Operators](#comparison-operators) - - [Logical Operators](#logical-operators) - - [Increment Operator](#increment-operator) - - [Decrement Operator](#decrement-operator) - - [Ternary Operators](#ternary-operators) - - [Operator Precendence](#operator-precendence) - - [Window Methods](#window-methods) - - [Window alert() method](#window-alert-method) - - [Window prompt() method](#window-prompt-method) - - [Window confirm() method](#window-confirm-method) - - [Date Object](#date-object) - - [Creating a time object](#creating-a-time-object) - - [Getting full year](#getting-full-year) - - [Getting month](#getting-month) - - [Getting date](#getting-date) - - [Getting day](#getting-day) - - [Getting hours](#getting-hours) - - [Getting minutes](#getting-minutes) - - [Getting seconds](#getting-seconds) - - [Getting time](#getting-time) -- [💻 Day 3: Exercises](#%f0%9f%92%bb-day-3-exercises) - - [1. Exercises: Data types Part](#1-exercises-data-types-part) - - [2. Exercises: Arithmetic Operators Part](#2-exercises-arithmetic-operators-part) - - [3. Exercises: Booleans Part](#3-exercises-booleans-part) - - [4. Exercises: Comparison Operators](#4-exercises-comparison-operators) - - [5. Exercises: Logical Operators](#5-exercises-logical-operators) - - [6 Ternary Operator](#6-ternary-operator) - - [7. Exercises: Date time Object](#7-exercises-date-time-object) - # 📔Day 1 @@ -192,6 +139,7 @@ console.log('Hello, World!') ##### Console.log with multiple arguments The console.log(param1, param2, param3), can take multiple arguments. + ![console log multiple arguments](./images/console_log_multipl_arguments.png) ```js @@ -208,12 +156,13 @@ Congratulations! You wrote your first JavaScript code using *console.log()*. We add comments to our code. Comments are very important to make code more readable and to leave remarks in our code. JavaScript does not execute the comment part of our code. Any text starts with // in JavaScript is a comment or anything enclose like this /* */ is a comment. -Example: Single Line Comment +**Example: Single Line Comment** // This is the first comment // This is the second comment // I am a single line comment -Example: Multiline Comment + +**Example: Multiline Comment** /* This is a multiline comment @@ -303,7 +252,7 @@ Create a folder on your desktop and call it 30DaysOfJS or in any location and c 30DaysOfScript:Inline Script - + ``` @@ -321,7 +270,7 @@ First, let us write on the head part of the page. 30DaysOfScript:Internal Script @@ -610,1205 +559,4 @@ When you run the files on 01-Day folder you should get this: You are 30 years old. ``` -# 📔 Day 2 - -## Data types - -In the previous section, we mentioned a little bit about data types. Data or values have data types. Data types describe the characteristics of data. Data types can be divided into two - -1. Primitive data types -2. Non-primitive data types(Object References) - -### Primitive Data Types - -Primitive data types in JavaScript includes: - - 1. Numbers - Integers, floats - 2. Strings - Any data under single or double quote - 3. Booleans - true or false value - 4. Null - empty value or no value - 5. Undefined - a declared variable without a value - -Non-primitive data types in JavaScript includes: - -1. Objects -2. Functions -3. Arrays - -Now, let us see what exactly mean primitive and non-primitive data types. -*Primitive* data types are immutable(non-modifiable) data types. Once a primitive data type is created we can not modify it. -**Example:** - -```js -let word = 'JavaScript' -``` - -If we try to modify the string stored in variable *word*, JavaScript will raise an error. Any data type under a single quote, double-quote, or backtick is a string data type. - -```js -word[0] = 'Y' -``` - -This expression does not change the string stored in the variable *word*. So, we can say that strings are not modifiable or immutable. -Primitive data types are compared by its values. Let us compare different data values. See the example below: - -```js -let numOne = 3 -let numTwo = 3 -console.log(numOne == numTwo) // true - -let js = 'JavaScript' -let py = 'Python' -console.log(js == py) //false - -let lightOn = true -let lightOff = false -console.log(lightOn == lightOff) // false -``` - -### Non-Primitive Data Types - -*Non-primitive* data types are modifiable or mutable. We can modify the value of non-primitive data types after it gets created. -Let us see by creating an array. An array is a list of data values in a square bracket. Arrays can contain the same or different data types. Array values are referenced by their index. In JavaScript array index starts at zero. I.e., the first element of an array is found at index zero, the second element at index one, and the third element at index two, etc. - -```js -let nums = [1, 2, 3] -nums[0] = 10 -console.log(nums) // [10, 2, 3] -``` - -As you can see, an array in which a non-primitive data type is mutable. Non-primitive data types can not be compared by value. Even if two non-primitive data types have the same properties and values, they are not strictly equal. - -```js -let nums = [1, 2, 3] -let numbers = [1, 2, 3] -console.log(nums == numbers) // false - -let userOne = { -name:'Asabeneh', -role:'teaching', -country:'Finland' -} -let userTwo = { -name:'Asabeneh', -role:'teaching', -country:'Finland' -} -console.log(userOne == userTwo) -``` - -Rule of thumb, we do not compare non-primitive data types. Do not compare array, function, or object. -Non-primitive values are referred to as reference types because they are being compared by reference instead of value. Two objects are only strictly equal if they refer to the same underlying object. - -```js -let nums = [1, 2, 3] -let numbers = nums -console.log(nums == numbers) // true - -let userOne = { -name:'Asabeneh', -role:'teaching', -country:'Finland' -} -let userTwo = userOne -console.log(userOne == userTwo) // true -``` - -If you have a hard time understanding the difference between primitive data types and non-primitive data types, you are not the only one. Calm down and just go to the next section and try to come back after some time. Now let us start the data types by number type. - -## Numbers - -Numbers are integers and decimal values which can do all the arithmetic operations. -Lets' see some examples of Numbers. - -### Declaring number data types - -```js -let age = 35 -const gravity = 9.81 //we use const for non-changing values, gravitational constant in m/s2 -let mass = 72 // mass in Kilogram -const PI = 3.14 // pi a geometrical constant - -//More Examples -const boilingPoint = 100 // temperature in oC, boiling point of water which is a constant -const bodyTemp = 37 // oC average human body temperature, which is a constant -console.log(age, gravity, mass, PI, boilingPoint, bodyTemp) -``` - -### Math Object - -In JavaScript the Math Object provides a lots of methods to work with numbers. - -```js -const PI = Math.PI -console.log(PI) // 3.141592653589793 -console.log(Math.round(PI)) // 3; to round values to the nearest number -console.log(Math.round(9.81)) // 10 -console.log(Math.floor(PI)) // 3; rounding down -console.log(Math.ceil(PI)) // 4; rounding up -console.log(Math.min(-5, 3, 20, 4,5, 10)) // -5, returns the minimum value -console.log(Math.max(-5, 3, 20, 4,5, 10)) // 20, returns the maximum value - -const randNum = Math.random() // creates random number between 0 to 0.999999 -console.log(randNum) -// Let create random number between 0 to 10 -const num = Math.floor(Math.random () * 11) // creates random number between 0 and 10 -console.log(num) - -//Absolute value -console.log(Math.abs(-10)) //10 -//Square root -console.log(Math.sqrt(100)) // 10 -console.log(Math.sqrt(2)) //1.4142135623730951 -// Power -console.log(Math.pow(3, 2)) // 9 -console.log(Math.E) // 2.718 - -// Logarithm -//Returns the natural logarithm of base E of x, Math.log(x) -console.log(Math.log(2)) // 0.6931471805599453 -console.log(Math.log(10)) // 2.302585092994046 - -// Trigonometry -Math.sin(0) -Math.sin(60) - -Math.cos(0) -Math.cos(60) -``` - -## Strings - -Strings are texts, which are under **_single_** or **_double_** quote. To declare a string, we need a variable name, assignment operator, a value under a single quote, double-quote, or backtick. -Lets' see some examples of string: - -```js -let space = ' ' // an empty space string -let firstName = 'Asabeneh' -let lastName = 'Yetayeh' -let country = 'Finland' -let city = 'Helsinki' -let language = 'JavaScript' -let job = 'teacher' -``` - -### String Concatenation - -Connect two or more strings together is called concatenation. - -```js -// Declaring different variables of different data types -let space = ' ' -let firstName = 'Asabeneh' -let lastName = 'Yetayeh' -let country = 'Finland' -let city = 'Helsinki' -let language = 'JavaScript' -let job = 'teacher' -``` - -```js -let fullName = firstName + space + lastName; // concatenation, merging two string together. -console.log(fullName); -``` - -```sh -// out -Asabeneh Yetayeh -``` - -We can concatenate string in different ways. - -#### Concatenating using addition operator - -Concatenating using the addition operator is an old way. This way of concatenating is tedious and error-prone. It is good to know how to concatenate this way, but I strongly suggest to use the second way. - -```js -// Declaring different variables of different data types -let space = ' ' -let firstName = 'Asabeneh' -let lastName = 'Yetayeh' -let country = 'Finland' -let city = 'Helsinki' -let language = 'JavaScript' -let job = 'teacher' -let age = 250 -let fullName = firstName + space + lastName -let personInfoOne = fullName + '. I am ' + age + '. I live in ' + country; // ES5 -console.log(personInfoOne) -``` - -```sh -Asabeneh Yetayeh. I am 250. I live in Finland -``` - -#### Long Literal Strings - -A string could be a single character or paragraph or a page. If the string length is too big it does not fit in one line. We can use the backslash character (\) at the end of each line to indicate that the string will continue on the next line. -**Example:** - -```js -const paragraph = "My name is Asabeneh Yetayeh. I live in Finland, Helsinki.\ -I am a teacher and I love teaching. I teach HTML, CSS, JavaScript, React, Redux, \ -Node.js, Python, Data Analysis and D3.js for anyone who is interested to learn. \ -In the end of 2019, I was thinking to expand my teaching and to reach \ -to global audience and I started a Python challenge from November 20 - December 19.\ -It was one of the most rewarding and inspiring experience.\ -Now, we are in 2020. I am enjoying preparing the 30DaysOfJavaScript challenge and \ -I hope you are enjoying too." -console.log(paragraph) -``` - -#### Escape Sequences in string - -In JavaScript and other programming language \ followed by some characters is an escape sequence. Let's see the most common escape characters: - -- \n: new line -- \t: Tab means(8 spaces) -- \\\\: Back slash -- \\': Single quote (') -- \\":Double quote (") - -```js -console.log('I hope every one is enjoying the 30 Days Of JavaScript challenge.\nDo you ?') // line break -console.log('Days\tTopics\tExercises') -console.log('Day 1\t3\t5') -console.log('Day 2\t3\t5') -console.log('Day 3\t3\t5') -console.log('Day 4\t3\t5') -console.log('This is a back slash symbol (\\)') // To write a back slash -console.log('In every programming language it starts with \"Hello, World!\"') -console.log("In every programming language it starts with \'Hello, World!\'") -console.log('The saying \'Seeing is Believing\' is\'t correct in 2020') -``` - -#### Template Literals(Template Strings) - -To create a template string, we use two backticks. We can inject data as expression inside a template string. To inject data, we enclose the expression with a curly bracket({}) followed by a $ sign. See the syntax below. - -```js -//Syntax -`String literal text` -`String literal text ${expression}` -``` - -**Example: 1** - -```js -console.log(`The sum of 2 and 3 is 5`) -let a = 2 -let b = 3 -console.log(`The sum of ${a} and ${b} is ${a + b}`) -``` - -**Example:2** - -```js -let firstName = 'Asabeneh' -let lastName = 'Yetayeh' -let country = 'Finland' -let city = 'Helsinki' -let language = 'JavaScript' -let job = 'teacher' -let age = 250 -let fullName = firstName + ' ' + lastName - -let personInfoTwo = `I am ${fullName}. I am ${age}. I live in ${country}.` //ES6 - String interpolation method -let personInfoThree = `I am ${fullName}. I live in ${city}, ${country}. I am a ${job}. I teach ${language}.` -console.log(personInfoTwo) -console.log(personInfoThree) -``` - -```sh -I am Asabeneh Yetayeh. I am 250. I live in Finland. -I am Asabeneh Yetayeh. I live in Helsinki, Finland. I am a teacher. I teach JavaScript. -``` - -Using a string template or string interpolation method, we can add expression, which could be a value or some operations(comparison, arithmetic operations, ternary operation). - -```js -let a = 2 -let b = 3 -console.log(`${a} is greater than ${b}: ${a > b}`) -``` - -```sh -2 is greater than 3: false -``` - -### String Methods - -Everything in JavaScript is an object. A string is a primitive data type that means we can not modify once it is created. The string object has many string methods. There are different string methods that can help us to work with strings. - -1. *length*: The string *length* method returns the number of characters in a string included empty space. - **Example:** - - ```js - let js = 'JavaScript' - console.log(js.length) // 10 - let firstName = 'Asabeneh' - console.log(firstName.length) // 8 - ``` - -2. *Accessing characters in a string*: We can access each character in a string using its index. In programming, counting starts from 0. The first index of the string is zero, and the last index is one minus the length of the string. - - ![Accessing sting by index](./images/string_indexes.png) - -Let us access different characters in 'JavaScript' string. - -```js -let string = 'JavaScript' -let firstLetter = string[0] -console.log(firstLetter) // J -let secondLetter = string[1] // a -let thirdLetter = string[2] -let lastLetter = string[9] -console.log(lastLetter) // t -let lastIndex = string.length - 1 -console.log(lastIndex) // 9 -console.log(string[lastIndex]) // t -``` - -1. *toUpperCase()*: this method changes the string to uppercase letters. - -```js -let string = 'JavaScript' -console.log(string.toUpperCase()) // JAVASCRIPT -let firstName = 'Asabeneh' -console.log(firstName.toUpperCase()) // ASABENEH -let country = 'Finland' -console.log(country.toUpperCase()) // FINLAND -``` - -4. *toLowerCase()*: this method changes the string to lowercase letters. - -```js -let string = 'JavasCript' -console.log(string.toLowerCase()) // javascript -let firstName = 'Asabeneh' -console.log(firstName.toLowerCase()) // asabeneh -let country = 'Finland' -console.log(country.toLowerCase()) // finland -``` - -5. *substr()*: It takes two arguments, the starting index and number of characters to slice. - -```js -let string = 'JavaScript' -console.log(string.substr(4,6)) // Script -let country = 'Finland' -console.log(country.substr(3, 4)) // land -``` - -6. *substring()*: It takes two arguments, the starting index and the stopping index but it doesn't include the stopping index. - -```js -let string = 'JavaScript' -console.log(string.substring(0,4)) // Java -console.log(string.substring(4,10)) // Script -console.log(string.substring(4)) // Script -let country = 'Finland' -console.log(country.substring(0, 3)) // Fin -console.log(country.substring(3, 7)) // land -console.log(country.substring(3)) // land -``` - -7. *split()*: The split method splits a string at a specified place. - -```js -let string = '30 Days Of JavaScipt' -console.log(string.split()) // ["30 Days Of JavaScript"] -console.log(string.split(' ')) // ["30", "Days", "Of", "JavaScript"] -let firstName = 'Asabeneh' -console.log(firstName.split()) // ["Asabeneh"] -console.log(firstName.split('')) // ["A", "s", "a", "b", "e", "n", "e", "h"] -let countries = 'Finland, Sweden, Norway, Denmark, and Iceland' -console.log(countries.split(',')) // ["Finland", " Sweden", " Norway", " Denmark", " and Iceland"] -console.log(countries.split(', ')) //  ["Finland", "Sweden", "Norway", "Denmark", "and Iceland"] -``` - -8. *trim()*: Removes trailing space in the beginning or the end of a string. - -```js -let string = ' 30 Days Of JavaScript ' -console.log(string) -console.log(string.trim(' ')) // -let firstName = ' Asabeneh ' -console.log(firstName) -console.log(firstName.trim()) // -``` - -```sh - 30 Days Of JavasCript -30 Days Of JavasCript - Asabeneh -Asabeneh -``` - -9. *includes()*: It takes a substring argument and it check if substring argument exists in the string. *includes()* returns a boolean. It checks if a substring exist in a string and it returns true if it exists and false if it doesn't exist. - -```js -let string = '30 Days Of JavaScript' -console.log(string.includes('Days')) // true -console.log(string.includes('days')) // false -console.log(string.includes('Script')) // true -console.log(string.includes('script')) // false -console.log(string.includes('java')) // false -console.log(string.includes('Java')) // true - -let country = 'Finland' -console.log(country.includes('fin')) // false -console.log(country.includes('Fin')) // true -console.log(country.includes('land')) // true -console.log(country.includes('Land')) // false -``` - -10. *replace()*: takes to parameter the old substring and new substring. - -```js -string.replace(oldsubstring, newsubstring) -``` - -```js -let string = '30 Days Of JavaScript' -console.log(string.replace('JavaScript', 'Python')) // 30 Days Of Python -let country = 'Finland' -console.log(country.replace('Fin', 'Noman')) // Nomanland -``` - -11. *charAt()*: Takes index and it returns the value at that index - -```js -string.charAt(index) -``` - -```js -let string = '30 Days Of JavaScript' -console.log(string.charAt(0)) // 3 -let lastIndex = string.length - 1 -console.log(string.charAt(lastIndex)) // t -``` - -12. *charCodeAt()*: Takes index and it returns char code(ASCII number) of the value at that index - -```js -string.charCodeAt(index) -``` - -```js -let string = '30 Days Of JavaScript' -console.log(string.charCodeAt(3)) // D ASCII number is 51 -let lastIndex = string.length - 1 -console.log(string.charCodeAt(lastIndex)) // t ASCII is 116 - -``` - -13. *indexOf()*: Takes takes a substring and if the substring exists in a string it returns the first position of the substring if does not exist it returns -1 - -```js -string.indexOf(substring) -``` - -```js -let string = '30 Days Of JavaScript' -console.log(string.indexOf('D')) // 3 -console.log(string.indexOf('Days')) // 3 -console.log(string.indexOf('days')) // -1 -console.log(string.indexOf('a')) // 4 -console.log(string.indexOf('JavaScript')) // 11 -console.log(string.indexOf('Script')) //15 -console.log(string.indexOf('script')) // -1 -``` - -14. *lastIndexOf()*: Takes takes a substring and if the substring exists in a string it returns the last position of the substring if it does not exist it returns -1 - -```js -string.lastIndexOf(index) -``` - -```js -let string = 'I love JavaScript. If you do not love JavaScript what else can you love.' -console.log(string.lastIndexOf('love')) // 67 -console.log(string.lastIndexOf('you')) // 63 -console.log(string.lastIndexOf('JavaScript')) // 38 -``` - -15. *concat()*: it takes many substrings and creates concatenation. - -```js -string.concat(substring, substring, substring) -``` - -```js -let string = '30' -console.log(string.concat("Days", "Of", "JavaScript")) // 30DaysOfJavaScript -let country = 'Fin' -console.log(country.concat("land")) // Finland -``` - -16. *startsWith*: it takes a substring as an argument and it checks if the string starts with that specified substring. It returns a boolean(true or false). - -```js -//syntax -string.startsWith(substring) -``` - -```js -let string = 'Love is the best to in this world' -console.log(string.startsWith('Love')) // true -console.log(string.startsWith('love')) // false -console.log(string.startsWith('world')) // false - -let country = 'Finland' -console.log(country.startsWith('Fin')) // true -console.log(country.startsWith('fin')) // false -console.log(country.startsWith('land')) // false -``` - -17. *endsWith*: it takes a substring as an argument and it checks if the string starts with that specified substring. It returns a boolean(true or false). - -```js -string.endsWith(substring) -``` - -```js -let string = 'Love is the best to in this world' -console.log(string.endsWith('world')) // true -console.log(string.endsWith('love')) // false -console.log(string.endsWith('in this world')) // true - -let country = 'Finland' -console.log(country.endsWith('land')) // true -console.log(country.endsWith('fin')) // false -console.log(country.endsWith('Fin')) // false -``` - -18. *search*: it takes a substring as an argument and it returns the index of the first match. - -```js -string.search(substring) -``` - -```js -let string = 'I love JavaScript. If you do not love JavaScript what else can you love.' -console.log(string.search('love')) // 2 -``` - -19. *match*: it takes a substring or regular expression pattern as an argument and it returns an array if there is match if not it returns null. Let us see how a regular expression pattern looks like. It starts with / sign and ends with / sign. - -```js -let string = 'love' -let patternOne = /love/ // with out any flag -let patternTwo = /love/gi // g-means to search in the whole text, i - case insensitive -``` - -```js -string.match(substring) -``` - -```js -let string = 'I love JavaScript. If you do not love JavaScript what else can you love.' -console.log(string.match('love')) // -/* -output - -["love", index: 2, input: "I love JavaScript. If you do not love JavaScript what else can you love.", groups: undefined] -*/ -let pattern = /love/gi -console.log(string.match(pattern)) // ["love", "love", "love"] -``` - -Let us extract numbers from text using regular expression. This is not regular expression section, no panic. - -```js -let txt = 'In 2019, I run 30 Days of Pyhton. Now, in 2020 I super exited to start this challenge' -let regEx = /\d+/ // d with escape character means d not a normal d instead acts a digit -// + means one or more digit numbers, -// if there is g after that it means global, search everywhere. -console.log(txt.match(regEx)) // ["2", "0", "1", "9", "3", "0", "2", "0", "2", "0"] -console.log(txt.match(/\d+/g)) // ["2019", "30", "2020"] -``` - -20. *repeat()*: it takes a number argument and it returned the repeated version of the string. - -```js -string.repeat(n) -``` - -```js -let string = 'love' -console.log(string.repeat(10)) // lovelovelovelovelovelovelovelovelovelove -``` - -# 💻 Day 2: Exercises - -## Exercises: String Part - -1. Declare a variable name challenge and assign it to an initial value **'30 Days Of JavaScript'**. -2. Print the string on the browser console using __console.log()__ -3. Print the __length__ of the string on the browser console using _console.log()_ -4. Change all the string to capital letters using __toUpperCase()__ method -5. Change all the string to lowercase letters using __toLowerCase()__ method -6. Cut(slice) out the first word of the string using __substr()__ or __substring()__ method -7. Slice out the phrase *Days Of JavaScript* from *30 Days Of JavaScript*. -8. Use __substr__ to slice out the phase __because because because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ -9. Check if the string contains a word __Script__ using __includes()__ method -10. Split the __string__ into __array__ using __split()__ method -11. Split the string 30 Days Of JavaScript at the space using __split()__ method -12. 'Facebook, Google, Microsoft, Apple, IBM, Oracle, Amazon' __split__ the string at the comma and change it to an array. -13. Change 30 Days Of JavaScript to 30 Days Of Python using __replace()__ method. -14. What is character at index 15 in '30 Days Of JavaScript' string use __charAt()__ method. -15. What is the character code of J in '30 Days Of JavaScript' string using __charCodeAt()__ -16. Use __indexOf__ to determine the position of the first occurrence of a in 30 Days Of JavaScript -17. Use __lastIndexOf__ to determine the position of the last occurrence of a in 30 Days Of JavaScript. -18. Use __indexOf__ to find the position of the first occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ -19. Use __lastIndexOf__ to find the position of the last occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ -20. Use __search__ to find the position of the first occurrence of the word __because__ in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ -21. Use __trim()__ to remove if there is trailing whitespace at the beginning and the end of a string.E.g ' 30 Days Of JavaScript '. -22. Use __startsWith()__ method with the string *30 Days Of JavaScript* make the result true -23. Use __endsWith()__ method with the string *30 Days Of JavaScript* make the result true -24. Use __match()__ method to find all the a’s in 30 Days Of JavaScript -25. Use __match()__ to count the number all because's in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ -26. Use __concat()__ and merge '30 Days of' and 'JavaScript' to a single string, '30 Days Of JavaScript' -27. Use __repeat()__ method to print 30 Days Of JavaScript 2 times -28. Love is the best thing in this world. Some found their love and some are still looking for their love. Count the number of word love in this sentence. -29. Calculate the total annual income of the person by extract the numbers from the following text. 'He earns 5000 euro from salary per month, 10000 euro annual bonus, 15000 euro online courses per month.' -30. Clean the following text and find the most frequent word(hint, use replace and regular express). - -```js - const sentence = '%I $am@% a %tea@cher%, &and& I lo%#ve %tea@ching%;. There $is nothing; &as& mo@re rewarding as educa@ting &and& @emp%o@wering peo@ple. ;I found tea@ching m%o@re interesting tha@n any other %jo@bs. %Do@es thi%s mo@tivate yo@u to be a tea@cher!? %Th#is 30#Days&OfJavaScript &is also $the $result of &love& of tea&ching' -``` - -31. Using console.log() print out the following statement. - -```sh -The quote 'There is no exercise better for the heart than reaching down and lifting people up.' by John Holmes teaches us to help to one another. -``` - -32. Using console.log() print out the following quote by Mother Teresa. - -```sh -"Love is not patronizing and charity isn't about pity, it is about love. Charity and love are the same -- with charity you give love, so don't just give money but reach out your hand instead." -``` - -# 📔 Day 3 - -## Booleans - -A boolean data type represents one of the two values:_true_ or _false_. Boolean value is either true or false. The use of these data types will be clear when you start the comparison operator. Any comparisons return a boolean value which is either true or false. - -**Example: Boolean Values** - -```js -let isLightOn = true; -let isRaining = false; -let isHungry = false; -let isMarried = true; -let truValue = 4 > 3 // true -let falseValue = 3 < 4 // false -``` - -We agreed that boolean values are either true or false. - -### Truthy values - -- All numbers(positive and negative) are truthy except zero -- All strings are truthy -- The boolean true - -### Falsy values - -- 0 -- 0n -- null -- undefined -- NaN -- the boolean false -- '', "", ``, empty string - -It is good to remember those truthy values and falsy values. In later section, we will use them with conditions to make decision. - -## Undefined - -If we declare a variable and if we do not assign a value, the value will be undefined. In addition to this, if a function is not returning the value will be undefined. - -```js -let firstName; -console.log(firstName); //not defined, because it is not assigned to a value yet -``` - -## Null - -```js -let empty = null; -console.log(empty); // -> null , means no value -``` - -## Operators - -### Assignment operators - -An equal sign in JavaScript is an assignment operator. It uses to assign a variable. - -```js -let firstName = 'Asabeneh' -let country = 'Finland' -``` - -Assignment Operators - -![Assignment operators](images/assignment_operators.png) - -### Arithmetic Operators - -Arithmetic operators are mathematical operators. - -- Addition(+): a + b -- Subtraction(-): a - b -- Multiplication(*): a * b -- Division(/): a / b -- Modulus(%):a % b -- Exponential(**):a ** b - -```js -let numOne = 4; -let numTwo = 3; -let sum = numOne + numTwo; -let diff = numOne - numTwo; -let mult = numOne * numTwo; -let div = numOne / numTwo; -let remainder = numOne % numTwo; -let powerOf = numOne ** numTwo -console.log(sum, diff, mult, div, remainder, powerOf); // ->7,1,12,1.33,1, 64 - -let PI = 3.14; -let radius = 100; // length in meter - -const gravity = 9.81; // in m/s2 -let mass = 72; // in Kilogram -const boilingPoint = 100; // temperature in oC, boiling point of water -const bodyTemp = 37; // body temperature in oC - -//Let us calculate area of a circle -const areaOfCircle = PI * radius * radius; -console.log(areaOfCircle); // -> 314 m -// Let us calculate weight of an object -const weight = mass * gravity; -console.log(weight); // -> 706.32 N(Newton) - -//Concatenating string with numbers using string interpolation -/* - The boiling point of water is 100 oC. - Human body temperature is 37 oC. - The gravity of earth is 9.81 m/s2. - */ -console.log( - `The boiling point of water is ${boilingPoint} oC.\nHuman body temperature is ${bodyTemp} oC.\nThe gravity of earth is ${gravity} m / s2.` -); -``` - -### Comparison Operators - -In programming we compare values, we use comparison operators to compare two values. We check if a value is greater or less or equal to other value. - -![Comparison Operators](./images/comparison_operators.png) -**Example: Comparison Operators** - -```js -console.log(3 > 2) // true, because 3 is greater than 2 -console.log(3 >= 2) // true, because 3 is greater than 2 -console.log(3 < 2) // false, because 3 is greater than 2 -console.log(2 < 3) // true, because 2 is less than 3 -console.log(2 <= 3) // true, because 2 is less than 3 -console.log(3 == 2) // false, because 3 is not equal to 2 -console.log(3 != 2) // true, because 3 is not equal to 2 -console.log(3 == '3') // true, compare only value -console.log(3 === '3') // false, compare both value and data type -console.log(3 !== '3') // true, compare both value and data type -console.log(3 !== '3') // true, compare both value and data type -console.log(3 != 3) // false, compare only value -console.log(3 !== 3) // false, compare both value and data type - -console.log('mango'.length == 'avocado'.length) // false -console.log('mango'.length != 'avocado'.length) // true -console.log('mango'.length < 'avocado'.length) // true -console.log('milk'.length != 'meat'.length) // false -console.log('milk'.length == 'meat'.length) // true -console.log('tomato'.length == 'potato'.length) // true -console.log('python'.length > 'dragon'.length) // false -``` - -### Logical Operators - -The following symbols are the common logical operators: -&&(ampersand) , ||(pipe) and !(negation). -&& gets true only if the two operands are true. -|| gets true either of the operand is true. -! negates true to false, false to true. - -```js -//&& ampersand example -const check = 4 > 3 && 10 > 5; // true and true -> true -const check = 4 > 3 && 10 < 5; // true and false -> false -const check = 4 < 3 && 10 < 5; // false and false -> false -//|| pipe or, example -const check = 4 > 3 || 10 > 5; // true and true -> true -const check = 4 > 3 || 10 < 5; // true and false -> true -const check = 4 < 3 || 10 < 5; // false and false -> false -//! Negation examples -let check = 4 > 3; // -> true -let check = !(4 > 3); // -> false -let isLightOn = true; -let isLightOff = !isLightOn; // -> false -let isMarried = !false; // -> true -``` - -### Increment Operator - -In JavaScrip we use the increment operator to increase a value stored in a variable. The increment could be pre or post increment. Let us see each of them: - -1. Pre-increment - -```js -let count = 0 -console.log(++count) // 1 -console.log(count) // 1 -``` - -1. Post-increment - -```js -let count = 0 -console.log(count++) // 0 -console.log(count) // 1 -``` - -We use most of the time post-increment. At leas you should remember how to use post-increment operator. - -### Decrement Operator - -In JavaScrip we use the decrement operator to decrease a value stored in a variable. The decrement could be pre or post decrement. Let us see each of them: - -1. Pre-decrement - -```js -let count = 0 -console.log(--count) // -1 -console.log(count) // -1 -``` - -2. Post-decrement - -```js -let count = 0 -console.log(count--) // 0 -console.log(count) // -1 -``` - -#### Ternary Operators - -Ternary operator allows to write a condition. -Another way to write conditionals is using ternary operators. Look at the following examples: - -```js -let isRaining = true -isRaining - ? console.log('You need a rain coat.') - : console.log('No need for a rain coat.'); -isRaining = false - -isRaining - ? console.log('You need a rain coat.') - : console.log('No need for a rain coat.'); -``` - -```sh -You need a rain coat. -No need for a rain coat. -``` - -```js -let number = 5 -number > 0 - ? console.log(`${number} is a positive number`) - : console.log(`${number} is a number number`); -number = -5 - -number > 0 - ? console.log(`${number} is a positive number`) - : console.log(`${number} is a number number`); -``` - -```sh -5 is a positive number --5 is a number number -``` - -### Operator Precendence - -I would like to recommend you to read about operator precendence from this [link](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence) - -## Window Methods - -### Window alert() method - -As you have seen at very beginning alert() method displays an alert box with a specified message and an OK button. It is a builtin method and it takes on argument. - -```js -alert(message) -``` - -```js -alert('Welcome to 30DaysOfJavaScript') -``` - -Do not use too much alert because it is destructing and annoying, use it just for to test. - -### Window prompt() method - -The window prompt methods display a prompt box with an input on your browser to take input values and the input data can be stored in a variable. The prompt() method takes two arguments. The second argument is optional. - -```js -prompt('required text', 'optional text') -``` - -```js -let number = prompt('Enter number', 'number goes here') -console.log(number) -``` - -### Window confirm() method - -The confirm() method displays a dialog box with a specified message, along with an OK and a Cancel button. -A confirm box is often used to ask permission from a user to do something. Window confirm() takes an string as an argument. -Clicking the OK yields true value, clicking the Cancel yields true value. - -```js -const agree = confirm('Are you sure you like to delete? ') -console.log(agree) // result will be true or false based on what you click on the dialog box -``` - -These are not all the window methods we will have a separate section to go deep into window methods. - -## Date Object - -Time is an important thing. We like to know the time a certain activity or event. In JavaScript current time and date is created using JavaScript Date Object. The object we create using Date object provides many methods to work with date and time.The methods we use to get date and time information from a date object values are started with a word _get_ because it provide the information. -_getFullYear(), getMonths(), getDate(), getDay(), getHours(), getMinutes, getSeconds(), getMilliseconds(), getTime(), getDay()_ - -![Date time Object](images/date_time_object.png) - -### Creating a time object - -Once we create time object. The time object will provide information about time. Let us create a time object - -```js -const now = new Date () -console.log(now) // Sat Jan 04 2020 00:56:41 GMT+0200 (Eastern European Standard Time) -``` - -We have created a time object and we can access any date time information from the object using the get methods we have mentioned on the table. - -### Getting full year - -Let's extract or get the full from a time object. - -```js -const now = new Date () -console.log(now.getFullYear()) // 2020 -``` - -### Getting month - -Let's extract or get the month from a time object. - -```js -const now = new Date () -console.log(now.getMonth()) // 0, because the month is January, month(0-11) -``` - -### Getting date - -Let's extract or get the date of the month from a time object. - -```js -const now = new Date () -console.log(now.getDate()) // 4, because the day of the month is 4th, day(0-31) -``` - -### Getting day - -Let's extract or get the day of the week from a time object. - -```js -const now = new Date () -console.log(now.getDay()) // 6, because the day is Saturday which is the 5th day, -// Getting the weekday as a number (0-6) -``` - -### Getting hours - -Let's extract or get the hours from a time object. - -```js -const now = new Date () -console.log(now.getHours()) // 0, because the time is 00:56:41 -``` - -### Getting minutes - -Let's extract or get the minutes from a time object. - -```js -const now = new Date () -console.log(now.getMinutes()) // 56, because the time is 00:56:41 -``` - -### Getting seconds - -Let's extract or get the seconds from a time object. - -```js -const now = new Date () -console.log(now.getSeconds()) // 41, because the time is 00:56:41 -``` - -### Getting time - -This method give time in milliseconds starting from January 1, 1970. It is also know as Unix time. We can get the unix time in two ways: - -1. Using *getTime()* - -```js -const now = new Date () // -console.log(now.getTime()) // 1578092201341, this is the number of seconds passed from January 1, 1970 to January 4, 2020 00:56:41 -``` - -1. Using *Date.now()* - -```js -const allSeconds = Date.now () // -console.log(allSeconds) // 1578092201341, this is the number of seconds passed from January 1, 1970 to January 4, 2020 00:56:41 -const timeInSeconds = new Date ().getTime() -console.log(allSeconds == timeInSeconds) // true -``` - -Let us format these values to a human readable time format. -**Example:** - -```js -const now = new Date (); -const year = now.getFullYear(); // return year -const month = now.getMonth() + 1; // return month(0 - 11) -const date = now.getDate(); // return date (1 - 31) -const hours = now.getHours(); // return number (0 - 23) -const minutes = now.getMinutes();// return number (0 -59) -console.log(`${date}/${month}/${year} ${hours}:${minutes}`) // 4/1/2020 0:56 -``` - -# 💻 Day 3: Exercises - -## 1. Exercises: Data types Part - -1. Declare firstName, lastName, country, city, age, isMarried, year variable and assign value to it - -1. The JavaScript typeof operator uses to check different data types. Check the data type of each variables from question number 1. - -## 2. Exercises: Arithmetic Operators Part - -JavaScript arithmetic operators are addition(+), subtraction(-), multiplication(*), division(/), modulus(%), exponential(**), increment(++) and decrement(--). - -```js -let operandOne = 4; -let operandTwo = 3; -``` - -Using the above operands apply different JavaScript arithmetic operations. - -## 3. Exercises: Booleans Part - -Boolean value is either true or false. - -1. Write three JavaScript statement which provide truthy value. -1. Write three JavaScript statement which provide falsy value. - -## 4. Exercises: Comparison Operators - -Figure out the result of the following comparison expression first without using console.log(). After you decide the result confirm it using console.log() - -1. 4 > 3 -1. 4 >= 3 -1. 4 < 3 -1. 4 <= 3 -1. 4 == 4 -1. 4 === 4 -1. 4 != 4 -1. 4 !== 4 -1. 4 != '4' -1. 4 == '4' -1. 4 === '4' - -## 5. Exercises: Logical Operators - -Figure out the result of the following expressions first without using console.log(). After you decide the result confirm it by using console.log() - -1. 4 > 3 && 10 < 12 -1. 4 > 3 && 10 > 12 -1. 4 > 3 || 10 < 12 -1. 4 > 3 || 10 > 12 -1. !(4 > 3) -1. !(4 < 3) -1. !(false) -1. !(4 > 3 && 10 < 12) -1. !(4 > 3 && 10 > 12) -1. !(4 === '4') - -## 6 Ternary Operator - -1. If the length of your name is greater than 7 say, your name is long else say your name is short. -1. Compare your first name length and your family name length and you should get this output. - -```js -let firstName = 'Asabeneh' -let lastName = 'Yetayeh -``` - -```sh -//Output -Your first name, Asabeneh is longer than your family name, Yetayeh -``` - -1. Declare two variables _myAge_ and _yourAge_ and assign them initial values and myAge and yourAge. - Output: - - ```js - let myAge = 250 - let yourAge = 25 - ``` - - ```sh - //output - I am 225 years older than you. - ``` - -1. Using prompt get the year the user was born and if the user is 18 or above allow the user to drive if not tell the user to wait a certain amount of years. - -```js -// if the age is 25 -You are 25. You are old enough to drive -// if the age is under 18 - You are 15. You will be allowed to drive after 3 years. -``` - -## 7. Exercises: Date time Object - -1. What is the year today? -1. What is the month today as a number? -1. What is the date today? -1. What is the day today as a number? -1. What is the hours now? -1. What is the minutes now? -1. Find out the numbers of seconds elapsed from January 1, 1970 to now. -1. Create a human readable time format - 1. YYY-MM-DD HH:mm:ss - 2. DD-MM-YYYY HH:mm:ss - 3. DD/MM/YYY HH:mm:ss +[Day 2 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_strings.md) From 35abce50bb9249cf4f1201b1ee97741e7ae5d40c Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 15:47:38 +0200 Subject: [PATCH 15/31] restructuring files --- 02_Day/02_day_strings.md | 9 ++++++--- 03_Day/03_booleans_operators_date.md | 12 +++++++----- readMe.md | 3 ++- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/02_Day/02_day_strings.md b/02_Day/02_day_strings.md index 74717dc..8291f79 100644 --- a/02_Day/02_day_strings.md +++ b/02_Day/02_day_strings.md @@ -1,9 +1,12 @@ ## Table of Contents -![Thirty Days Of JavaScript](./images/30DaysOfJavaScript.png) - [<< Day 1](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/readMe.md) | [Day 3 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/03_Day/03_booleans_operators_date.md) +-- + +![Thirty Days Of JavaScript](../images/30DaysOfJavaScript.png) + + - [📔 Day 2](#%f0%9f%93%94-day-2) - [Data types](#data-types) @@ -364,7 +367,7 @@ Everything in JavaScript is an object. A string is a primitive data type that me 2. *Accessing characters in a string*: We can access each character in a string using its index. In programming, counting starts from 0. The first index of the string is zero, and the last index is one minus the length of the string. - ![Accessing sting by index](./images/string_indexes.png) + ![Accessing sting by index](../images/string_indexes.png) Let us access different characters in 'JavaScript' string. diff --git a/03_Day/03_booleans_operators_date.md b/03_Day/03_booleans_operators_date.md index c2f1d9b..5b837c2 100644 --- a/03_Day/03_booleans_operators_date.md +++ b/03_Day/03_booleans_operators_date.md @@ -1,6 +1,8 @@ ## Table of Contents -![Thirty Days Of JavaScript](./images/30DaysOfJavaScript.png) +[<< Day 2](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_strings.md) | [Day 4 >>](#) + +![Thirty Days Of JavaScript](../images/30DaysOfJavaScript.png) - [📔 Day 3](#%f0%9f%93%94-day-3) - [Booleans](#booleans) @@ -106,7 +108,7 @@ let country = 'Finland' Assignment Operators -![Assignment operators](images/assignment_operators.png) +![Assignment operators](../images/assignment_operators.png) ### Arithmetic Operators @@ -160,7 +162,7 @@ console.log( In programming we compare values, we use comparison operators to compare two values. We check if a value is greater or less or equal to other value. -![Comparison Operators](./images/comparison_operators.png) +![Comparison Operators](../images/comparison_operators.png) **Example: Comparison Operators** ```js @@ -344,7 +346,7 @@ These are not all the window methods we will have a separate section to go deep Time is an important thing. We like to know the time a certain activity or event. In JavaScript current time and date is created using JavaScript Date Object. The object we create using Date object provides many methods to work with date and time.The methods we use to get date and time information from a date object values are started with a word _get_ because it provide the information. _getFullYear(), getMonths(), getDate(), getDay(), getHours(), getMinutes, getSeconds(), getMilliseconds(), getTime(), getDay()_ -![Date time Object](images/date_time_object.png) +![Date time Object](../images/date_time_object.png) ### Creating a time object @@ -562,4 +564,4 @@ You are 25. You are old enough to drive 2. DD-MM-YYYY HH:mm:ss 3. DD/MM/YYY HH:mm:ss -[<< Day 2]((https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_strings.md)) | [Day 4 >>](#) \ No newline at end of file +[<< Day 2](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_strings.md) | [Day 4 >>](#) \ No newline at end of file diff --git a/readMe.md b/readMe.md index 236ee65..8d9107c 100644 --- a/readMe.md +++ b/readMe.md @@ -1,8 +1,9 @@ ## Table of Contents -![Thirty Days Of JavaScript](./images/30DaysOfJavaScript.png) [Day 2 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_strings.md) +![Thirty Days Of JavaScript](./images/30DaysOfJavaScript.png) + - [📔Day 1](#%f0%9f%93%94day-1) - [Introduction](#introduction) - [Requirements](#requirements) From 075d41207f5f6bdc4cd6cd2a28d07a17597917df Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 16:23:23 +0200 Subject: [PATCH 16/31] restructuring files --- 01_Day/Day -1 – 1.png | Bin 0 -> 76287 bytes 02_Day/02_day_strings.md | 8 +++++--- 02_Day/day_1_2.png | Bin 0 -> 77171 bytes 03_Day/03_booleans_operators_date.md | 6 +++++- 03_Day/day_1_3.png | Bin 0 -> 77446 bytes images/day_1_1.png | Bin 0 -> 76287 bytes readMe.md | 6 +++++- 7 files changed, 15 insertions(+), 5 deletions(-) create mode 100644 01_Day/Day -1 – 1.png create mode 100644 02_Day/day_1_2.png create mode 100644 03_Day/day_1_3.png create mode 100644 images/day_1_1.png diff --git a/01_Day/Day -1 – 1.png b/01_Day/Day -1 – 1.png new file mode 100644 index 0000000000000000000000000000000000000000..dd583c71949a66a79ec46198434079262aa3fa02 GIT binary patch literal 76287 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⁣b|u4>pQy(8){FAt0(B_Sbl9qQlc8F{ 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 literal 0 HcmV?d00001 diff --git a/02_Day/02_day_strings.md b/02_Day/02_day_strings.md index 8291f79..270875d 100644 --- a/02_Day/02_day_strings.md +++ b/02_Day/02_day_strings.md @@ -4,9 +4,7 @@ [<< Day 1](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/readMe.md) | [Day 3 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/03_Day/03_booleans_operators_date.md) -- -![Thirty Days Of JavaScript](../images/30DaysOfJavaScript.png) - - +![Thirty Days Of JavaScript](./day_1_2.png) - [📔 Day 2](#%f0%9f%93%94-day-2) - [Data types](#data-types) @@ -655,6 +653,8 @@ let string = 'love' console.log(string.repeat(10)) // lovelovelovelovelovelovelovelovelovelove ``` +🌕 You have completed day 2 challenge. Now do some exercises for you brain and for your muscle. + # 💻 Day 2: Exercises ## Exercises: String Part @@ -706,4 +706,6 @@ The quote 'There is no exercise better for the heart than reaching down and lift "Love is not patronizing and charity isn't about pity, it is about love. Charity and love are the same -- with charity you give love, so don't just give money but reach out your hand instead." ``` +🎉 CONGRATULATIONS ! 🎉 + [<< Day 1](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/readMe.md) | [Day 3 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/03_Day/03_booleans_operators_date.md) diff --git a/02_Day/day_1_2.png b/02_Day/day_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0f6eefb1de42767b4768f0bf49694dc227395938 GIT binary patch literal 77171 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 literal 0 HcmV?d00001 diff --git a/03_Day/03_booleans_operators_date.md b/03_Day/03_booleans_operators_date.md index 5b837c2..1548073 100644 --- a/03_Day/03_booleans_operators_date.md +++ b/03_Day/03_booleans_operators_date.md @@ -2,7 +2,7 @@ [<< Day 2](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_strings.md) | [Day 4 >>](#) -![Thirty Days Of JavaScript](../images/30DaysOfJavaScript.png) +![Thirty Days Of JavaScript](./day_1_3.png) - [📔 Day 3](#%f0%9f%93%94-day-3) - [Booleans](#booleans) @@ -456,6 +456,8 @@ const minutes = now.getMinutes();// return number (0 -59) console.log(`${date}/${month}/${year} ${hours}:${minutes}`) // 4/1/2020 0:56 ``` +🌕 You have completed day 3 challenge. Now do some exercises for you brain and for your muscle. + # 💻 Day 3: Exercises ## 1. Exercises: Data types Part @@ -564,4 +566,6 @@ You are 25. You are old enough to drive 2. DD-MM-YYYY HH:mm:ss 3. DD/MM/YYY HH:mm:ss +🎉 CONGRATULATIONS ! 🎉 + [<< Day 2](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_strings.md) | [Day 4 >>](#) \ No newline at end of file diff --git a/03_Day/day_1_3.png b/03_Day/day_1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..1268d2ca6c95226adbb99d8d75073f073d423a95 GIT binary patch literal 77446 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 AqW}N^ literal 0 HcmV?d00001 diff --git a/images/day_1_1.png b/images/day_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..dd583c71949a66a79ec46198434079262aa3fa02 GIT binary patch literal 76287 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⁣b|u4>pQy(8){FAt0(B_Sbl9qQlc8F{ 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 literal 0 HcmV?d00001 diff --git a/readMe.md b/readMe.md index 8d9107c..de2f0b6 100644 --- a/readMe.md +++ b/readMe.md @@ -2,7 +2,7 @@ [Day 2 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_strings.md) -![Thirty Days Of JavaScript](./images/30DaysOfJavaScript.png) +![Thirty Days Of JavaScript](./images/day_1_1.png) - [📔Day 1](#%f0%9f%93%94day-1) - [Introduction](#introduction) @@ -539,6 +539,8 @@ When you run the files on 01-Day folder you should get this: ![Day one](./images/day_1.png) +🌕 You have completed day 1 challenge. Now do some exercises for you brain and for your muscle. + # 💻 Day 1: Exercises 1. Write a single line comment which says, _comments can make code readable_ @@ -560,4 +562,6 @@ When you run the files on 01-Day folder you should get this: You are 30 years old. ``` +🎉 CONGRATULATIONS ! 🎉 + [Day 2 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_strings.md) From fdbba29ce6f95dbf3c3221d379f6f7bb9af76565 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 16:26:59 +0200 Subject: [PATCH 17/31] restructuring files --- 03_Day/03_booleans_operators_date.md | 5 ++++- readMe.md | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/03_Day/03_booleans_operators_date.md b/03_Day/03_booleans_operators_date.md index 1548073..954c034 100644 --- a/03_Day/03_booleans_operators_date.md +++ b/03_Day/03_booleans_operators_date.md @@ -1,6 +1,7 @@ ## Table of Contents [<< Day 2](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_strings.md) | [Day 4 >>](#) +-- ![Thirty Days Of JavaScript](./day_1_3.png) @@ -41,6 +42,7 @@ - [5. Exercises: Logical Operators](#5-exercises-logical-operators) - [6 Ternary Operator](#6-ternary-operator) - [7. Exercises: Date time Object](#7-exercises-date-time-object) + - [<< Day 2 | Day 4 >>](#ltlt-day-2--day-4-gtgt-1) # 📔 Day 3 @@ -568,4 +570,5 @@ You are 25. You are old enough to drive 🎉 CONGRATULATIONS ! 🎉 -[<< Day 2](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_strings.md) | [Day 4 >>](#) \ No newline at end of file +[<< Day 2](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_strings.md) | [Day 4 >>](#) +-- \ No newline at end of file diff --git a/readMe.md b/readMe.md index de2f0b6..e41b384 100644 --- a/readMe.md +++ b/readMe.md @@ -1,6 +1,7 @@ ## Table of Contents [Day 2 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_strings.md) +-- ![Thirty Days Of JavaScript](./images/day_1_1.png) @@ -36,6 +37,7 @@ - [Comments](#comments) - [Variables](#variables) - [💻 Day 1: Exercises](#%f0%9f%92%bb-day-1-exercises) + - [Day 2 >>](#day-2-gtgt-1) # 📔Day 1 @@ -565,3 +567,4 @@ When you run the files on 01-Day folder you should get this: 🎉 CONGRATULATIONS ! 🎉 [Day 2 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_strings.md) +-- From 9adc1631c6d514ae343f125ceaa208c009816d05 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 16:54:41 +0200 Subject: [PATCH 18/31] restructuring files --- 02_Day/02_day_strings.md | 4 +++- 03_Day/03_booleans_operators_date.md | 2 +- readMe.md | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/02_Day/02_day_strings.md b/02_Day/02_day_strings.md index 270875d..a763735 100644 --- a/02_Day/02_day_strings.md +++ b/02_Day/02_day_strings.md @@ -22,6 +22,7 @@ - [String Methods](#string-methods) - [💻 Day 2: Exercises](#%f0%9f%92%bb-day-2-exercises) - [Exercises: String Part](#exercises-string-part) + - [<< Day 1 | Day 3 >>](#ltlt-day-1--day-3-gtgt-1) # 📔 Day 2 @@ -653,7 +654,7 @@ let string = 'love' console.log(string.repeat(10)) // lovelovelovelovelovelovelovelovelovelove ``` -🌕 You have completed day 2 challenge. Now do some exercises for you brain and for your muscle. +🌕 You are awesome. You have just completed day 2 challenge and you are two steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. # 💻 Day 2: Exercises @@ -709,3 +710,4 @@ The quote 'There is no exercise better for the heart than reaching down and lift 🎉 CONGRATULATIONS ! 🎉 [<< Day 1](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/readMe.md) | [Day 3 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/03_Day/03_booleans_operators_date.md) +-- diff --git a/03_Day/03_booleans_operators_date.md b/03_Day/03_booleans_operators_date.md index 954c034..e3264ab 100644 --- a/03_Day/03_booleans_operators_date.md +++ b/03_Day/03_booleans_operators_date.md @@ -458,7 +458,7 @@ const minutes = now.getMinutes();// return number (0 -59) console.log(`${date}/${month}/${year} ${hours}:${minutes}`) // 4/1/2020 0:56 ``` -🌕 You have completed day 3 challenge. Now do some exercises for you brain and for your muscle. +🌕 You have boundless energy. You have just completed day 3 challenge and you are three steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. # 💻 Day 3: Exercises diff --git a/readMe.md b/readMe.md index e41b384..c20125d 100644 --- a/readMe.md +++ b/readMe.md @@ -541,7 +541,7 @@ When you run the files on 01-Day folder you should get this: ![Day one](./images/day_1.png) -🌕 You have completed day 1 challenge. Now do some exercises for you brain and for your muscle. +🌕 You are amazing. You have just completed day 1 challenge and you are in your way to greatness. Now do some exercises for your brain and for your muscle. # 💻 Day 1: Exercises From 28dc2d5c239887c844095fc4a0ffd53f8fdf0c4a Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 17:01:32 +0200 Subject: [PATCH 19/31] restructuring files --- 02_Day/02_day_strings.md | 2 -- 03_Day/03_booleans_operators_date.md | 2 -- readMe.md | 3 +-- 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/02_Day/02_day_strings.md b/02_Day/02_day_strings.md index a763735..28f3c6c 100644 --- a/02_Day/02_day_strings.md +++ b/02_Day/02_day_strings.md @@ -22,7 +22,6 @@ - [String Methods](#string-methods) - [💻 Day 2: Exercises](#%f0%9f%92%bb-day-2-exercises) - [Exercises: String Part](#exercises-string-part) - - [<< Day 1 | Day 3 >>](#ltlt-day-1--day-3-gtgt-1) # 📔 Day 2 @@ -710,4 +709,3 @@ The quote 'There is no exercise better for the heart than reaching down and lift 🎉 CONGRATULATIONS ! 🎉 [<< Day 1](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/readMe.md) | [Day 3 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/03_Day/03_booleans_operators_date.md) --- diff --git a/03_Day/03_booleans_operators_date.md b/03_Day/03_booleans_operators_date.md index e3264ab..c9066d9 100644 --- a/03_Day/03_booleans_operators_date.md +++ b/03_Day/03_booleans_operators_date.md @@ -42,7 +42,6 @@ - [5. Exercises: Logical Operators](#5-exercises-logical-operators) - [6 Ternary Operator](#6-ternary-operator) - [7. Exercises: Date time Object](#7-exercises-date-time-object) - - [<< Day 2 | Day 4 >>](#ltlt-day-2--day-4-gtgt-1) # 📔 Day 3 @@ -571,4 +570,3 @@ You are 25. You are old enough to drive 🎉 CONGRATULATIONS ! 🎉 [<< Day 2](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_strings.md) | [Day 4 >>](#) --- \ No newline at end of file diff --git a/readMe.md b/readMe.md index c20125d..56f6274 100644 --- a/readMe.md +++ b/readMe.md @@ -37,7 +37,6 @@ - [Comments](#comments) - [Variables](#variables) - [💻 Day 1: Exercises](#%f0%9f%92%bb-day-1-exercises) - - [Day 2 >>](#day-2-gtgt-1) # 📔Day 1 @@ -567,4 +566,4 @@ When you run the files on 01-Day folder you should get this: 🎉 CONGRATULATIONS ! 🎉 [Day 2 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_strings.md) --- + From 109979e438eb55fd5e3d378a44d01eb2590e5fb4 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 20:07:05 +0200 Subject: [PATCH 20/31] restructuring files --- 02_Day/{02_day_strings.md => 02_day_data_types.md} | 6 +++--- 03_Day/03_booleans_operators_date.md | 4 ++-- readMe.md | 5 ++--- 3 files changed, 7 insertions(+), 8 deletions(-) rename 02_Day/{02_day_strings.md => 02_day_data_types.md} (98%) diff --git a/02_Day/02_day_strings.md b/02_Day/02_day_data_types.md similarity index 98% rename from 02_Day/02_day_strings.md rename to 02_Day/02_day_data_types.md index 28f3c6c..cb886b3 100644 --- a/02_Day/02_day_strings.md +++ b/02_Day/02_day_data_types.md @@ -686,9 +686,9 @@ console.log(string.repeat(10)) // lovelovelovelovelovelovelovelovelovelove 25. Use __match()__ to count the number all because's in the following sentence:__'You cannot end a sentence with because because because is a conjunction'__ 26. Use __concat()__ and merge '30 Days of' and 'JavaScript' to a single string, '30 Days Of JavaScript' 27. Use __repeat()__ method to print 30 Days Of JavaScript 2 times -28. Love is the best thing in this world. Some found their love and some are still looking for their love. Count the number of word love in this sentence. -29. Calculate the total annual income of the person by extract the numbers from the following text. 'He earns 5000 euro from salary per month, 10000 euro annual bonus, 15000 euro online courses per month.' -30. Clean the following text and find the most frequent word(hint, use replace and regular express). +28. ** 'Love is the best thing in this world. Some found their love and some are still looking for their love.' Count the number of word love in this sentence. +29. ** Calculate the total annual income of the person by extract the numbers from the following text. 'He earns 5000 euro from salary per month, 10000 euro annual bonus, 15000 euro online courses per month.' +30. ** Clean the following text and find the most frequent word(hint, use replace and regular express). ```js const sentence = '%I $am@% a %tea@cher%, &and& I lo%#ve %tea@ching%;. There $is nothing; &as& mo@re rewarding as educa@ting &and& @emp%o@wering peo@ple. ;I found tea@ching m%o@re interesting tha@n any other %jo@bs. %Do@es thi%s mo@tivate yo@u to be a tea@cher!? %Th#is 30#Days&OfJavaScript &is also $the $result of &love& of tea&ching' diff --git a/03_Day/03_booleans_operators_date.md b/03_Day/03_booleans_operators_date.md index c9066d9..05a3431 100644 --- a/03_Day/03_booleans_operators_date.md +++ b/03_Day/03_booleans_operators_date.md @@ -1,6 +1,6 @@ ## Table of Contents -[<< Day 2](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_strings.md) | [Day 4 >>](#) +[<< Day 2](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_data_types.md) | [Day 4 >>](#) -- ![Thirty Days Of JavaScript](./day_1_3.png) @@ -569,4 +569,4 @@ You are 25. You are old enough to drive 🎉 CONGRATULATIONS ! 🎉 -[<< Day 2](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_strings.md) | [Day 4 >>](#) +[<< Day 2](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_data_types.md) | [Day 4 >>](#) diff --git a/readMe.md b/readMe.md index 56f6274..eb2037c 100644 --- a/readMe.md +++ b/readMe.md @@ -1,6 +1,6 @@ ## Table of Contents -[Day 2 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_strings.md) +[Day 2 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_data_types.md) -- ![Thirty Days Of JavaScript](./images/day_1_1.png) @@ -565,5 +565,4 @@ When you run the files on 01-Day folder you should get this: 🎉 CONGRATULATIONS ! 🎉 -[Day 2 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_strings.md) - +[Day 2 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_data_types.md) From 052c896004028e3cc7c12b9fc4b086c9db8c48bc Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 20:35:07 +0200 Subject: [PATCH 21/31] question add to day 2 --- 02_Day/02_day_data_types.md | 88 +++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/02_Day/02_day_data_types.md b/02_Day/02_day_data_types.md index cb886b3..dffeb44 100644 --- a/02_Day/02_day_data_types.md +++ b/02_Day/02_day_data_types.md @@ -20,6 +20,10 @@ - [Escape Sequences in string](#escape-sequences-in-string) - [Template Literals(Template Strings)](#template-literalstemplate-strings) - [String Methods](#string-methods) + - [Numbers](#numbers-1) + - [Declaring number data types](#declaring-number-data-types-1) + - [Math Object](#math-object-1) + - [Random number generator](#random-number-generator) - [💻 Day 2: Exercises](#%f0%9f%92%bb-day-2-exercises) - [Exercises: String Part](#exercises-string-part) @@ -653,6 +657,85 @@ let string = 'love' console.log(string.repeat(10)) // lovelovelovelovelovelovelovelovelovelove ``` +## Numbers + +Numbers are integers and decimal values which can do all the arithmetic operations. +Lets' see some examples of Numbers. + +### Declaring number data types + +```js +let age = 35 +const gravity = 9.81 //we use const for non-changing values, gravitational constant in m/s2 +let mass = 72 // mass in Kilogram +const PI = 3.14 // pi a geometrical constant + +//More Examples +const boilingPoint = 100 // temperature in oC, boiling point of water which is a constant +const bodyTemp = 37 // oC average human body temperature, which is a constant +console.log(age, gravity, mass, PI, boilingPoint, bodyTemp) +``` + +### Math Object + +In JavaScript the Math Object provides a lots of methods to work with numbers. + +```js +const PI = Math.PI +console.log(PI) // 3.141592653589793 +console.log(Math.round(PI)) // 3; to round values to the nearest number +console.log(Math.round(9.81)) // 10 +console.log(Math.floor(PI)) // 3; rounding down +console.log(Math.ceil(PI)) // 4; rounding up +console.log(Math.min(-5, 3, 20, 4,5, 10)) // -5, returns the minimum value +console.log(Math.max(-5, 3, 20, 4,5, 10)) // 20, returns the maximum value + +const randNum = Math.random() // creates random number between 0 to 0.999999 +console.log(randNum) +// Let create random number between 0 to 10 +const num = Math.floor(Math.random () * 11) // creates random number between 0 and 10 +console.log(num) + +//Absolute value +console.log(Math.abs(-10)) //10 +//Square root +console.log(Math.sqrt(100)) // 10 +console.log(Math.sqrt(2)) //1.4142135623730951 +// Power +console.log(Math.pow(3, 2)) // 9 +console.log(Math.E) // 2.718 + +// Logarithm +//Returns the natural logarithm of base E of x, Math.log(x) +console.log(Math.log(2)) // 0.6931471805599453 +console.log(Math.log(10)) // 2.302585092994046 + +// Trigonometry +Math.sin(0) +Math.sin(60) + +Math.cos(0) +Math.cos(60) +``` + +#### Random number generator + +The JavaScript Math Object has a random() method number generator which generators number from 0 to 0.999999999... + +```js +let randomNum = Math.random() // generates 0 to 0.999 +``` + +Now, let us see how we can use random() method to generate a random number between 0 and 10 inclusive. + +```js +let randomNum = Math.random() // generates 0 to 0.999 +let numBtnZeroAndTen = randomNum * 11 +console.log(numBtnZeroAndTen) // this gives: min 0 and max 10.99 +let randomNumRoundToFloor = Math.floor(numBtnZeroAndTen) +console.log(randomNumRoundToFloor) // this gives between 0 and 10 +``` + 🌕 You are awesome. You have just completed day 2 challenge and you are two steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. # 💻 Day 2: Exercises @@ -706,6 +789,11 @@ The quote 'There is no exercise better for the heart than reaching down and lift "Love is not patronizing and charity isn't about pity, it is about love. Charity and love are the same -- with charity you give love, so don't just give money but reach out your hand instead." ``` +32. Generate a random number between 0 and 100 inclusive. +33. Generate a random number between 50 and 100 inclusive. +34. Generate a random number between 0 and 255 inclusive. +35. Access the 'JavaScript' string characters using a random number. + 🎉 CONGRATULATIONS ! 🎉 [<< Day 1](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/readMe.md) | [Day 3 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/03_Day/03_booleans_operators_date.md) From 10347cfe07847c1a1170836aafc283524bbe5a38 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 22:35:13 +0200 Subject: [PATCH 22/31] day 4 --- 02_Day/02_day_data_types.md | 20 +- 03_Day/03_booleans_operators_date.md | 71 ++++-- 04_Day/04_day_conditionals.md | 312 +++++++++++++++++++++++++++ 04_Day/day_1_4.png | Bin 0 -> 76863 bytes 4 files changed, 379 insertions(+), 24 deletions(-) create mode 100644 04_Day/04_day_conditionals.md create mode 100644 04_Day/day_1_4.png diff --git a/02_Day/02_day_data_types.md b/02_Day/02_day_data_types.md index dffeb44..97394f5 100644 --- a/02_Day/02_day_data_types.md +++ b/02_Day/02_day_data_types.md @@ -789,10 +789,22 @@ The quote 'There is no exercise better for the heart than reaching down and lift "Love is not patronizing and charity isn't about pity, it is about love. Charity and love are the same -- with charity you give love, so don't just give money but reach out your hand instead." ``` -32. Generate a random number between 0 and 100 inclusive. -33. Generate a random number between 50 and 100 inclusive. -34. Generate a random number between 0 and 255 inclusive. -35. Access the 'JavaScript' string characters using a random number. +32. +33. Check if 'on' is found in both python and jargon +34. _I hope this course is not full of jargon_. Check if _jargon_ is in the sentence. +35. Generate a random number between 0 and 100 inclusive. +36. Generate a random number between 50 and 100 inclusive. +37. Generate a random number between 0 and 255 inclusive. +38. Access the 'JavaScript' string characters using a random number. +39. Use console.log() and escape characters to print the following pattern. + +```js +1 1 1 1 1 +2 1 2 4 8 +3 1 3 9 27 +4 1 4 16 64 +5 1 5 25 125 +``` 🎉 CONGRATULATIONS ! 🎉 diff --git a/03_Day/03_booleans_operators_date.md b/03_Day/03_booleans_operators_date.md index 05a3431..c331feb 100644 --- a/03_Day/03_booleans_operators_date.md +++ b/03_Day/03_booleans_operators_date.md @@ -464,19 +464,49 @@ console.log(`${date}/${month}/${year} ${hours}:${minutes}`) // 4/1/2020 0:56 ## 1. Exercises: Data types Part 1. Declare firstName, lastName, country, city, age, isMarried, year variable and assign value to it - 1. The JavaScript typeof operator uses to check different data types. Check the data type of each variables from question number 1. +1. Check if type of '10' is equal to 10 +1. Check if parseInt('9.8') is equal to 10 ## 2. Exercises: Arithmetic Operators Part -JavaScript arithmetic operators are addition(+), subtraction(-), multiplication(*), division(/), modulus(%), exponential(**), increment(++) and decrement(--). + 1. Write a script that prompt the user to enter base and height of the triangle and calculate an area of a triangle (area = 0.5 x b x h). -```js -let operandOne = 4; -let operandTwo = 3; -``` + ```sh + Enter base: 20 + Enter height: 10 + The area of the triangle is 50 + ``` + +1. Write a script that prompt the user to enter side a, side b, and side c of the triangle and and calculate the perimeter of triangle (perimeter = a + b + c) + + ```sh + Enter side a: 5 + Enter side b: 4 + Enter side c: 3 + The perimeter of the triangle is 12 + ``` + +2. Get length and width using prompt and calculate an area of rectangle (area = length x width and the perimeter of rectangle (perimeter = 2 x (length + width)) +3. Get radius using prompt and calculate the area of a circle (area = pi x r x r) and circumference of a circle(c = 2 x pi x r) where pi = 3.14. +4. Calculate the slope, x-intercept and y-intercept of y = 2x -2 +5. Slope is (m = y2-y1/x2-x1). Find the slope between point (2, 2) and point(6,10) +6. Compare the slope of above two questions. +7. Calculate the value of y (y = x^2 + 6x + 9). Try to use different x values and figure out at what x value y is 0. +8. Writ a script that prompt a user to enters hours and rate per hour. Calculate pay of the person? -Using the above operands apply different JavaScript arithmetic operations. + ```sh + Enter hours: 40 + Enter rate per hour: 28 + Your weekly earning is 1120 + ``` + +9. Write a script that prompt the user to enter number of years. Calculate the number of seconds a person can live. Assume some one lives just hundred years + + ```sh + Enter number of yours you live: 100 + You lived 3153600000 seconds. + ``` ## 3. Exercises: Booleans Part @@ -500,21 +530,22 @@ Figure out the result of the following comparison expression first without using 1. 4 != '4' 1. 4 == '4' 1. 4 === '4' +Find the length of python and jargon and make a falsy comparison statement. ## 5. Exercises: Logical Operators -Figure out the result of the following expressions first without using console.log(). After you decide the result confirm it by using console.log() - -1. 4 > 3 && 10 < 12 -1. 4 > 3 && 10 > 12 -1. 4 > 3 || 10 < 12 -1. 4 > 3 || 10 > 12 -1. !(4 > 3) -1. !(4 < 3) -1. !(false) -1. !(4 > 3 && 10 < 12) -1. !(4 > 3 && 10 > 12) -1. !(4 === '4') +1. Figure out the result of the following expressions first without using console.log(). After you decide the result confirm it by using console.log() + 1. 4 > 3 && 10 < 12 + 2. 4 > 3 && 10 > 12 + 3. 4 > 3 || 10 < 12 + 4. 4 > 3 || 10 > 12 + 5. !(4 > 3) + 6. !(4 < 3) + 7. !(false) + 8. !(4 > 3 && 10 < 12) + 9. !(4 > 3 && 10 > 12) + 10. !(4 === '4') +2. There is no 'on' in both dragon and python ## 6 Ternary Operator @@ -546,7 +577,7 @@ Your first name, Asabeneh is longer than your family name, Yetayeh 1. Using prompt get the year the user was born and if the user is 18 or above allow the user to drive if not tell the user to wait a certain amount of years. -```js +```sh // if the age is 25 You are 25. You are old enough to drive // if the age is under 18 diff --git a/04_Day/04_day_conditionals.md b/04_Day/04_day_conditionals.md new file mode 100644 index 0000000..916faa1 --- /dev/null +++ b/04_Day/04_day_conditionals.md @@ -0,0 +1,312 @@ +## Table of Contents + +[<< Day 3](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/03_Day/03_day_booleans_operators_date.md) | [Day 5 >>](#) +-- + +![Thirty Days Of JavaScript](./day_1_4.png) + +- [📔 Day 4](#%f0%9f%93%94-day-4) + - [Conditionals](#conditionals) + - [If](#if) + - [If Else](#if-else) + - [If else if else](#if-else-if-else) + - [Switch](#switch) + - [Ternary Operators](#ternary-operators) +- [💻 Exercise - 8 : Conditionals](#%f0%9f%92%bb-exercise---8--conditionals) + +# 📔 Day 4 + +## Conditionals + +Conditional statements are used to decision based on different conditions. +By default , statements in JavaScript script executed sequentially from top to bottom. If the processing logic require so, the sequential flow of execution can be altered in two ways: + +- Conditional execution: a block of one or more statements will be executed if a certain expression is true +- Repetitive execution: a block of one or more statements will be repetitively executed as long as a certain expression is true. In this section, we will cover _if_, _else_ , _else if_ statements. The comparison and logical operator we learned in the previous sections will be useful in here. + +Conditions can be implementing using the following ways: + +- if +- if else +- if else if else +- switch +- ternary operator + +### If + +In JavaScript and other programming languages the key word _if_ use to check if a condition is true and to execute the block code. To create an if condition, we need _if_ keyword, condition inside a parenthesis and block of code inside a curly bracket({}). + +```js +// syntax +if (condition) { + //this part of code run for truthy condition +} +``` + +**Example:** + +```js +let num = 3 +if (num > 0) { + console.log(`${num} is a positive number`) +} +// 3 is a positive number +``` + +```js +let isRaining = true +if (isRaining) { + console.log('Remember to take your rain coat.') +} +``` + +As you can see in the above condition, 3 is greater than 0 and it is a positive number. The condition was true and the block code was executed. However, if the condition is false, we do not see a result. The same goes for the second condition, if isRaining is false the if block will not be executed and we do not see an output. In order to see the result of the falsy condition, we should have another block, which is going to be _else_. + +### If Else + +If condition is true the first block will be executed, if not the else condition will be executed. + +```js +// syntax +if (condition) { + // this part of code run for truthy condition +} else { + // this part of code run for false condition +} +``` + +```js +let num = 3 +if (num > 0) { + console.log(`${num} is a positive number`) +} else { + console.log(`${num} is a negative number`) +} +// 3 is a positive number + +num = -3 +if (num > 0) { + console.log(`${num} is a positive number`) +} else { + console.log(`${num} is a negative number`) +} +// -3 is a negative number +``` + +```js +let isRaining = true +if (isRaining) { + console.log('You need a rain coat.') +} else { + console.log('No need for a rain coat.') +} +// You need a rain coat. + +isRaining = false +if (isRaining) { + console.log('You need a rain coat.') +} else { + console.log('No need for a rain coat.') +} +// No need for a rain coat. +``` + +The above condition is false, therefore the else block was executed. How about if our condition is more than two, we will use *ele if* conditions. + +### If else if else + +On our daily life, we make decision on daily basis. We make decision not by checking one or two conditions instead we make decisions based on multiple conditions. As similar to our daily life, programming is also full conditions. We use *else if* when we have multiple conditions. + +```js +// syntax +if (condition) { + // code +} else if (condition) { + // code +} else { + // code + +} +``` + +**Example:** + +```js +let a = 0 +if (a > 0) { + console.log(`A${a} is a positive number`) +} else if (a < 0) { + print(`${a} is a negative number`) + else if (a == 0) { + print(` ${a} is zero`) +} else { + print('${a) is not a number') +} +``` + +```js +// if else if else +let weather = 'sunny' +if (weather === 'rainy') { + console.log('You need a rain coat.') +} else if (weather === 'cloudy') { + console.log('It might be cold, you need a jacket.') +} else if (weather === 'sunny') { + console.log('Go out freely.') +} else { + console.log('No need for rain coat.') +} +``` + +### Switch + +Switch is an alternative for **if else if else else** + +```js +let weather = 'cloudy' +switch (weather) { + case 'rainy': + console.log('You need a rain coat.') + break + case 'cloudy': + console.log('It might be cold, you need a jacket.') + break + case 'sunny': + console.log('Go out freely.') + break + default: + console.log(' No need for rain coat.') +} +// Switch More Examples +var dayUserInput = prompt('What day is today ?') +var day = dayUserInput.toLowerCase() +switch (day) { + case 'monday': + console.log('Today is Monday') + break + case 'tuesday': + console.log('Today is Tuesday') + break + case 'wednesday': + console.log('Today is Wednesday') + break + case 'thursday': + console.log('Today is Thursday') + break + case 'friday': + console.log('Today is Friday') + break + case 'saturday': + console.log('Today is Saturday') + break + case 'sunday': + console.log('Today is Sunday') + break + + default: + console.log('It is not a week day.') +} +``` + +### Ternary Operators + +Another way to write conditionals is using ternary operators. We have covered this in other sections but we should also mention it here. + +```js +let isRaining = true +isRaining + ? console.log('You need a rain coat.') + : console.log('No need for a rain coat.') +``` + +🌕 You have remarkable. You have just completed day 4 challenge and you are four steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. + +# 💻 Exercise - 8 : Conditionals + +1. Get user input using prompt(“Enter your age:”). If user is 18 or older , give feedback:You are old enough to drive but if not 18 give feedback to wait for the years he supposed to wait for. + + ```sh + Enter your age: 30 + You are old enough to drive. + + Enter your age:15 + You are left with 3 years to drive. + ``` + +1. Compare the values of myAge and yourAge using if … else. Based on the comparison log to console who is older (me or you). Use prompt(“Enter your age:”) to get the age as input. + + ```sh + Enter your age: 30 + You are 5 years older than me. + ``` + +1. If a is greater than b return a is greater than b else a is less than b. Do it both using if else and ternary operator. + + ```js + let a = 4 + let b = 3 + ``` + + ```sh + 4 is greater than 3 + ``` + +1. Write a code which give grade students according to theirs scores: + - 80-100, A + - 70-89, B + - 60-69, C + - 50-59, D + - 0 -49, F +1. Check if the season is Autumn, Winter, Spring or Summer. + If the user input is: + - September, October or November, the season is Autumn. + - December, January or February, the season is Winter. + - March, April or May, the season is Spring + - June, July or August, the season is Summer + +1. Even numbers are divisible by 2 and the remainder is zero. How do you check if a number is even or not using JavaScript? + + ```sh + Enter a number: 2 + 2 is an even number + + Enter a number 9 + 9 is is an odd number. + ``` + +1. Check if a day is week end day or a working day. Your script will take day as an input. + +```sh + What is the day is today? Saturday + Saturday is a weekend day. + + What is the day today? saturDaY + Saturday is a weekend day. + + What is the day today? Friday + Friday is a work day. + + What is the day today? FrIDAy + Friday is a work day. + ``` + +8. Write a program which tells the number days in a month. + + ```sh + Enter month: January + January has 31 days. + + Enter month: JANUARY + January has 31 day + + Enter month: February + February has 28 days. + + Enter month: FEbruary + February has 28 days. + ``` + + +🎉 CONGRATULATIONS ! 🎉 + +[<< Day 3](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/03_Day/03_day_booleans_operators_date.md) | [Day 5 >>](#) \ No newline at end of file diff --git a/04_Day/day_1_4.png b/04_Day/day_1_4.png new file mode 100644 index 0000000000000000000000000000000000000000..d5262c6baf63a6966176739a89d23234d83d8aae GIT binary patch literal 76863 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 XPNNTD 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 oCjM{Z88#u~NPn< Date: Sat, 4 Jan 2020 22:43:50 +0200 Subject: [PATCH 23/31] day 4 --- 03_Day/03_booleans_operators_date.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/03_Day/03_booleans_operators_date.md b/03_Day/03_booleans_operators_date.md index c331feb..5ed4331 100644 --- a/03_Day/03_booleans_operators_date.md +++ b/03_Day/03_booleans_operators_date.md @@ -1,6 +1,6 @@ ## Table of Contents -[<< Day 2](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_data_types.md) | [Day 4 >>](#) +[<< Day 2](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_data_types.md) | [Day 4 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/04_Day/04_day_conditionals.md) -- ![Thirty Days Of JavaScript](./day_1_3.png) @@ -600,4 +600,4 @@ You are 25. You are old enough to drive 🎉 CONGRATULATIONS ! 🎉 -[<< Day 2](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_data_types.md) | [Day 4 >>](#) +[<< Day 2](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_data_types.md) | [Day 4 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/04_Day/04_day_conditionals.md) From d73c98560a31d084db1671d512f3c2a13d2fc5dc Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 22:46:23 +0200 Subject: [PATCH 24/31] day 4 --- 04_Day/04_day_conditionals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/04_Day/04_day_conditionals.md b/04_Day/04_day_conditionals.md index 916faa1..e2a26a6 100644 --- a/04_Day/04_day_conditionals.md +++ b/04_Day/04_day_conditionals.md @@ -219,7 +219,7 @@ isRaining : console.log('No need for a rain coat.') ``` -🌕 You have remarkable. You have just completed day 4 challenge and you are four steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. +🌕 You are extraordinary and you have a remarkable potential. You have just completed day 4 challenge and you are four steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. # 💻 Exercise - 8 : Conditionals From 668f626c0d39b11198749be72efed69dd2279b2c Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sat, 4 Jan 2020 23:57:39 +0200 Subject: [PATCH 25/31] content restructured --- 02_Day/02_day_data_types.md | 179 ++++++++++++++++----------- 03_Day/03_booleans_operators_date.md | 2 +- 2 files changed, 109 insertions(+), 72 deletions(-) diff --git a/02_Day/02_day_data_types.md b/02_Day/02_day_data_types.md index 97394f5..72b00a9 100644 --- a/02_Day/02_day_data_types.md +++ b/02_Day/02_day_data_types.md @@ -13,6 +13,7 @@ - [Numbers](#numbers) - [Declaring number data types](#declaring-number-data-types) - [Math Object](#math-object) + - [Random number generator](#random-number-generator) - [Strings](#strings) - [String Concatenation](#string-concatenation) - [Concatenating using addition operator](#concatenating-using-addition-operator) @@ -20,12 +21,13 @@ - [Escape Sequences in string](#escape-sequences-in-string) - [Template Literals(Template Strings)](#template-literalstemplate-strings) - [String Methods](#string-methods) - - [Numbers](#numbers-1) - - [Declaring number data types](#declaring-number-data-types-1) - - [Math Object](#math-object-1) - - [Random number generator](#random-number-generator) + - [Checking Data types and Casting](#checking-data-types-and-casting) + - [Checking data types](#checking-data-types) + - [Changing data type(Casting)](#changing-data-typecasting) + - [String to Int](#string-to-int) + - [String to Float](#string-to-float) + - [Float to Int](#float-to-int) - [💻 Day 2: Exercises](#%f0%9f%92%bb-day-2-exercises) - - [Exercises: String Part](#exercises-string-part) # 📔 Day 2 @@ -131,7 +133,7 @@ let userTwo = userOne console.log(userOne == userTwo) // true ``` -If you have a hard time understanding the difference between primitive data types and non-primitive data types, you are not the only one. Calm down and just go to the next section and try to come back after some time. Now let us start the data types by number type. +If you have a hard time understanding the difference between primitive data types and non-primitive data types, you are not the only one. Calm down and just go to the next section and try to come back after some time. Now let us start the data types by number type. ## Numbers @@ -194,6 +196,24 @@ Math.cos(0) Math.cos(60) ``` +#### Random number generator + +The JavaScript Math Object has a random() method number generator which generators number from 0 to 0.999999999... + +```js +let randomNum = Math.random() // generates 0 to 0.999 +``` + +Now, let us see how we can use random() method to generate a random number between 0 and 10 inclusive. + +```js +let randomNum = Math.random() // generates 0 to 0.999 +let numBtnZeroAndTen = randomNum * 11 +console.log(numBtnZeroAndTen) // this gives: min 0 and max 10.99 +let randomNumRoundToFloor = Math.floor(numBtnZeroAndTen) +console.log(randomNumRoundToFloor) // this gives between 0 and 10 +``` + ## Strings Strings are texts, which are under **_single_** or **_double_** quote. To declare a string, we need a variable name, assignment operator, a value under a single quote, double-quote, or backtick. @@ -657,91 +677,106 @@ let string = 'love' console.log(string.repeat(10)) // lovelovelovelovelovelovelovelovelovelove ``` -## Numbers +## Checking Data types and Casting -Numbers are integers and decimal values which can do all the arithmetic operations. -Lets' see some examples of Numbers. +### Checking data types -### Declaring number data types +- Check Data types: To check the data type of a certain data type we use the _typeof_ and we also change one data type to another. + **Example:** ```js -let age = 35 -const gravity = 9.81 //we use const for non-changing values, gravitational constant in m/s2 -let mass = 72 // mass in Kilogram -const PI = 3.14 // pi a geometrical constant +// Different python data types +// Let's declare different data types -//More Examples -const boilingPoint = 100 // temperature in oC, boiling point of water which is a constant -const bodyTemp = 37 // oC average human body temperature, which is a constant -console.log(age, gravity, mass, PI, boilingPoint, bodyTemp) +let firstName = 'Asabeneh' // string +let lastName = 'Yetayeh' // string +let country = 'Finland' // string +let city = 'Helsinki' // string +let age = 250 // int, it is not my real age, do not worry about it + +console.log(typeof 'Asabeneh') // str +console.log(typeof firstName) // str +console.log(typeof 10) // number +console.log(typeof 3.14) // number +console.log(typeof true) // bool ``` -### Math Object +### Changing data type(Casting) -In JavaScript the Math Object provides a lots of methods to work with numbers. +- Casting: Converting one data type to another data type. We use _parseInt()_, _parsefloat()_,_Number()_, _+ sign_, _str()_ + When we do arithmetic operations string numbers should be first converted to integer or float if not it returns an error. -```js -const PI = Math.PI -console.log(PI) // 3.141592653589793 -console.log(Math.round(PI)) // 3; to round values to the nearest number -console.log(Math.round(9.81)) // 10 -console.log(Math.floor(PI)) // 3; rounding down -console.log(Math.ceil(PI)) // 4; rounding up -console.log(Math.min(-5, 3, 20, 4,5, 10)) // -5, returns the minimum value -console.log(Math.max(-5, 3, 20, 4,5, 10)) // 20, returns the maximum value +#### String to Int -const randNum = Math.random() // creates random number between 0 to 0.999999 -console.log(randNum) -// Let create random number between 0 to 10 -const num = Math.floor(Math.random () * 11) // creates random number between 0 and 10 -console.log(num) +We can convert string number to a number. Any number inside a quote is a string number. An example of a string number: '10', '5', etc. +We can convert string to number using the following methods: -//Absolute value -console.log(Math.abs(-10)) //10 -//Square root -console.log(Math.sqrt(100)) // 10 -console.log(Math.sqrt(2)) //1.4142135623730951 -// Power -console.log(Math.pow(3, 2)) // 9 -console.log(Math.E) // 2.718 +- parseInt() +- Number() +- + -// Logarithm -//Returns the natural logarithm of base E of x, Math.log(x) -console.log(Math.log(2)) // 0.6931471805599453 -console.log(Math.log(10)) // 2.302585092994046 +```js +let num = '10' +let numInt = parseInt(num) +console.log(numInt) // 10 +``` -// Trigonometry -Math.sin(0) -Math.sin(60) +```js +let num = '10' +let numInt = Number(num) +console.log(numInt) // 10 +``` -Math.cos(0) -Math.cos(60) +```js +let num = '10' +let numInt = +num +console.log(numInt) // 10 ``` -#### Random number generator +#### String to Float -The JavaScript Math Object has a random() method number generator which generators number from 0 to 0.999999999... +We can convert string float number to a float number. Any float number inside a quote is a string float number. An example of a string float number: '9.81', '3.14', '1.44', etc. +We can convert string float to number using the following methods: + +- parseFloat() +- Number() +- + ```js -let randomNum = Math.random() // generates 0 to 0.999 +let num = '9.81' +let numFloat = parseFloat(num) +console.log(numFloat) // 9.81 ``` -Now, let us see how we can use random() method to generate a random number between 0 and 10 inclusive. +```js +let num = '9.81' +let numFloat = Number(num) +console.log(numFloat) // 9.81 +``` ```js -let randomNum = Math.random() // generates 0 to 0.999 -let numBtnZeroAndTen = randomNum * 11 -console.log(numBtnZeroAndTen) // this gives: min 0 and max 10.99 -let randomNumRoundToFloor = Math.floor(numBtnZeroAndTen) -console.log(randomNumRoundToFloor) // this gives between 0 and 10 +let num = '9.81' +let numFloat = +num +console.log(numInt) // 9.81 +``` + +#### Float to Int + +We can convert float numbers to integers. +We use the following method to convert float to int: + +- parseInt() + +```js +let num = 9.81 +let numInt = parseInt(num) +console.log(numInt) // 9 ``` 🌕 You are awesome. You have just completed day 2 challenge and you are two steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. # 💻 Day 2: Exercises -## Exercises: String Part - 1. Declare a variable name challenge and assign it to an initial value **'30 Days Of JavaScript'**. 2. Print the string on the browser console using __console.log()__ 3. Print the __length__ of the string on the browser console using _console.log()_ @@ -789,7 +824,6 @@ The quote 'There is no exercise better for the heart than reaching down and lift "Love is not patronizing and charity isn't about pity, it is about love. Charity and love are the same -- with charity you give love, so don't just give money but reach out your hand instead." ``` -32. 33. Check if 'on' is found in both python and jargon 34. _I hope this course is not full of jargon_. Check if _jargon_ is in the sentence. 35. Generate a random number between 0 and 100 inclusive. @@ -797,14 +831,17 @@ The quote 'There is no exercise better for the heart than reaching down and lift 37. Generate a random number between 0 and 255 inclusive. 38. Access the 'JavaScript' string characters using a random number. 39. Use console.log() and escape characters to print the following pattern. - -```js -1 1 1 1 1 -2 1 2 4 8 -3 1 3 9 27 -4 1 4 16 64 -5 1 5 25 125 -``` + + ```js + 1 1 1 1 1 + 2 1 2 4 8 + 3 1 3 9 27 + 4 1 4 16 64 + 5 1 5 25 125 + ``` + +40. Check if typeof '10' is exactly equal to 10. If not make it exactly equal. +20. Check if parseInt('9.8') is equal to 10 if not make it exactly equal with 10. 🎉 CONGRATULATIONS ! 🎉 diff --git a/03_Day/03_booleans_operators_date.md b/03_Day/03_booleans_operators_date.md index 5ed4331..2b77a21 100644 --- a/03_Day/03_booleans_operators_date.md +++ b/03_Day/03_booleans_operators_date.md @@ -333,7 +333,7 @@ console.log(number) The confirm() method displays a dialog box with a specified message, along with an OK and a Cancel button. A confirm box is often used to ask permission from a user to do something. Window confirm() takes an string as an argument. -Clicking the OK yields true value, clicking the Cancel yields true value. +Clicking the OK yields true value, clicking the Cancel button yields false value. ```js const agree = confirm('Are you sure you like to delete? ') From ea884ca9e820265bd79b3b783b0bcccbad706418 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sun, 5 Jan 2020 00:47:45 +0200 Subject: [PATCH 26/31] content restructured --- 02_Day/02_day_data_types.md | 6 +- 03_Day/03_booleans_operators_date.md | 92 +++++++++++++++++----------- 2 files changed, 62 insertions(+), 36 deletions(-) diff --git a/02_Day/02_day_data_types.md b/02_Day/02_day_data_types.md index 72b00a9..47537c2 100644 --- a/02_Day/02_day_data_types.md +++ b/02_Day/02_day_data_types.md @@ -698,7 +698,11 @@ console.log(typeof 'Asabeneh') // str console.log(typeof firstName) // str console.log(typeof 10) // number console.log(typeof 3.14) // number -console.log(typeof true) // bool +console.log(typeof true) // boolean +console.log(typeof false) // boolean +console.log(typeof NaN) // number +console.log(typeof undefined) // undefined +console.log(typeof null) // object ``` ### Changing data type(Casting) diff --git a/03_Day/03_booleans_operators_date.md b/03_Day/03_booleans_operators_date.md index 2b77a21..13a1908 100644 --- a/03_Day/03_booleans_operators_date.md +++ b/03_Day/03_booleans_operators_date.md @@ -167,19 +167,32 @@ In programming we compare values, we use comparison operators to compare two val **Example: Comparison Operators** ```js -console.log(3 > 2) // true, because 3 is greater than 2 -console.log(3 >= 2) // true, because 3 is greater than 2 -console.log(3 < 2) // false, because 3 is greater than 2 -console.log(2 < 3) // true, because 2 is less than 3 -console.log(2 <= 3) // true, because 2 is less than 3 -console.log(3 == 2) // false, because 3 is not equal to 2 -console.log(3 != 2) // true, because 3 is not equal to 2 -console.log(3 == '3') // true, compare only value -console.log(3 === '3') // false, compare both value and data type -console.log(3 !== '3') // true, compare both value and data type -console.log(3 !== '3') // true, compare both value and data type -console.log(3 != 3) // false, compare only value -console.log(3 !== 3) // false, compare both value and data type +console.log(3 > 2) // true, because 3 is greater than 2 +console.log(3 >= 2) // true, because 3 is greater than 2 +console.log(3 < 2) // false, because 3 is greater than 2 +console.log(2 < 3) // true, because 2 is less than 3 +console.log(2 <= 3) // true, because 2 is less than 3 +console.log(3 == 2) // false, because 3 is not equal to 2 +console.log(3 != 2) // true, because 3 is not equal to 2 +console.log(3 == '3') // true, compare only value +console.log(3 === '3') // false, compare both value and data type +console.log(3 !== '3') // true, compare both value and data type +console.log(3 !== '3') // true, compare both value and data type +console.log(3 != 3) // false, compare only value +console.log(3 !== 3) // false, compare both value and data type +console.log(0 == false) // true, equivalent +console.log(0 == '') // true, equivalent +console.log(0 == ' ') // true, equivalent +console.log(0 === '') // false, not exactly the same +console.log(0 === false) // false, not exactly the same +console.log(1 == true) // true, equivalent +console.log(1 === true ) // false, not exactly the same +console.log(undefined == null) // true +console.log(undefined === null) // true +console.log(NaN == NaN) // false, not equal +console.log(NaN === NaN) // false +console.log(typeof NaN) // number + console.log('mango'.length == 'avocado'.length) // false console.log('mango'.length != 'avocado'.length) // true @@ -190,6 +203,9 @@ console.log('tomato'.length == 'potato'.length) // true console.log('python'.length > 'dragon'.length) // false ``` +Try to understand the above comparisons with some logic. Remember without any logic might be difficult. +JavaScript is some how a wired kind of programming language. JavaScript code run and give you a result but unless you are good at it may not be the desired result. The following [link](https://dorey.github.io/JavaScript-Equality-Table/) has an exhaustive list of comparison of data types. + ### Logical Operators The following symbols are the common logical operators: @@ -199,20 +215,26 @@ The following symbols are the common logical operators: ! negates true to false, false to true. ```js -//&& ampersand example -const check = 4 > 3 && 10 > 5; // true and true -> true -const check = 4 > 3 && 10 < 5; // true and false -> false -const check = 4 < 3 && 10 < 5; // false and false -> false -//|| pipe or, example -const check = 4 > 3 || 10 > 5; // true and true -> true -const check = 4 > 3 || 10 < 5; // true and false -> true -const check = 4 < 3 || 10 < 5; // false and false -> false + +//&& ampersand operator example + +const check = 4 > 3 && 10 > 5 // true and true -> true +const check = 4 > 3 && 10 < 5 // true and false -> false +const check = 4 < 3 && 10 < 5 // false and false -> false + +//|| pipe or operator, example + +const check = 4 > 3 || 10 > 5 // true and true -> true +const check = 4 > 3 || 10 < 5 // true and false -> true +const check = 4 < 3 || 10 < 5 // false and false -> false + //! Negation examples -let check = 4 > 3; // -> true -let check = !(4 > 3); // -> false -let isLightOn = true; -let isLightOff = !isLightOn; // -> false -let isMarried = !false; // -> true + +let check = 4 > 3 // true +let check = !(4 > 3) // false +let isLightOn = true +let isLightOff = !isLightOn // false +let isMarried = !false // true ``` ### Increment Operator @@ -223,7 +245,7 @@ In JavaScrip we use the increment operator to increase a value stored in a varia ```js let count = 0 -console.log(++count) // 1 +console.log(++count) // 1 console.log(count) // 1 ``` @@ -231,7 +253,7 @@ console.log(count) // 1 ```js let count = 0 -console.log(count++) // 0 +console.log(count++) // 0 console.log(count) // 1 ``` @@ -245,7 +267,7 @@ In JavaScrip we use the decrement operator to decrease a value stored in a varia ```js let count = 0 -console.log(--count) // -1 +console.log(--count) // -1 console.log(count) // -1 ``` @@ -253,7 +275,7 @@ console.log(count) // -1 ```js let count = 0 -console.log(count--) // 0 +console.log(count--) // 0 console.log(count) // -1 ``` @@ -266,12 +288,12 @@ Another way to write conditionals is using ternary operators. Look at the follow let isRaining = true isRaining ? console.log('You need a rain coat.') - : console.log('No need for a rain coat.'); + : console.log('No need for a rain coat.') isRaining = false isRaining ? console.log('You need a rain coat.') - : console.log('No need for a rain coat.'); + : console.log('No need for a rain coat.') ``` ```sh @@ -283,12 +305,12 @@ No need for a rain coat. let number = 5 number > 0 ? console.log(`${number} is a positive number`) - : console.log(`${number} is a number number`); + : console.log(`${number} is a number number`) number = -5 number > 0 ? console.log(`${number} is a positive number`) - : console.log(`${number} is a number number`); + : console.log(`${number} is a number number`) ``` ```sh @@ -554,7 +576,7 @@ Find the length of python and jargon and make a falsy comparison statement. ```js let firstName = 'Asabeneh' -let lastName = 'Yetayeh +let lastName = 'Yetayeh' ``` ```sh From 07e02ec446eac1ab5a9753c8756c12000eb312f5 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sun, 5 Jan 2020 01:01:12 +0200 Subject: [PATCH 27/31] content restructured --- 02_Day/02_day_data_types.md | 97 ++++++++++++++++++++----------------- 1 file changed, 53 insertions(+), 44 deletions(-) diff --git a/02_Day/02_day_data_types.md b/02_Day/02_day_data_types.md index 47537c2..9a01ee7 100644 --- a/02_Day/02_day_data_types.md +++ b/02_Day/02_day_data_types.md @@ -488,16 +488,16 @@ Asabeneh let string = '30 Days Of JavaScript' console.log(string.includes('Days')) // true console.log(string.includes('days')) // false -console.log(string.includes('Script')) // true -console.log(string.includes('script')) // false +console.log(string.includes('Script')) // true +console.log(string.includes('script')) // false console.log(string.includes('java')) // false console.log(string.includes('Java')) // true let country = 'Finland' -console.log(country.includes('fin')) // false -console.log(country.includes('Fin')) // true -console.log(country.includes('land')) // true -console.log(country.includes('Land')) // false +console.log(country.includes('fin')) // false +console.log(country.includes('Fin')) // true +console.log(country.includes('land')) // true +console.log(country.includes('Land')) // false ``` 10. *replace()*: takes to parameter the old substring and new substring. @@ -592,14 +592,14 @@ string.startsWith(substring) ```js let string = 'Love is the best to in this world' -console.log(string.startsWith('Love')) // true -console.log(string.startsWith('love')) // false -console.log(string.startsWith('world')) // false +console.log(string.startsWith('Love')) // true +console.log(string.startsWith('love')) // false +console.log(string.startsWith('world')) // false let country = 'Finland' -console.log(country.startsWith('Fin')) // true -console.log(country.startsWith('fin')) // false -console.log(country.startsWith('land')) // false +console.log(country.startsWith('Fin')) // true +console.log(country.startsWith('fin')) // false +console.log(country.startsWith('land')) // false ``` 17. *endsWith*: it takes a substring as an argument and it checks if the string starts with that specified substring. It returns a boolean(true or false). @@ -610,14 +610,14 @@ string.endsWith(substring) ```js let string = 'Love is the best to in this world' -console.log(string.endsWith('world')) // true -console.log(string.endsWith('love')) // false +console.log(string.endsWith('world')) // true +console.log(string.endsWith('love')) // false console.log(string.endsWith('in this world')) // true let country = 'Finland' -console.log(country.endsWith('land')) // true -console.log(country.endsWith('fin')) // false -console.log(country.endsWith('Fin')) // false +console.log(country.endsWith('land')) // true +console.log(country.endsWith('fin')) // false +console.log(country.endsWith('Fin')) // false ``` 18. *search*: it takes a substring as an argument and it returns the index of the first match. @@ -635,8 +635,8 @@ console.log(string.search('love')) // 2 ```js let string = 'love' -let patternOne = /love/ // with out any flag -let patternTwo = /love/gi // g-means to search in the whole text, i - case insensitive +let patternOne = /love/ // with out any flag +let patternTwo = /love/gi // g-means to search in the whole text, i - case insensitive ``` ```js @@ -645,24 +645,31 @@ string.match(substring) ```js let string = 'I love JavaScript. If you do not love JavaScript what else can you love.' -console.log(string.match('love')) // -/* -output +console.log(string.match('love')) +``` + +```sh +//output ["love", index: 2, input: "I love JavaScript. If you do not love JavaScript what else can you love.", groups: undefined] -*/ +``` + +```js let pattern = /love/gi -console.log(string.match(pattern)) // ["love", "love", "love"] +console.log(string.match(pattern)) // ["love", "love", "love"] ``` Let us extract numbers from text using regular expression. This is not regular expression section, no panic. ```js -let txt = 'In 2019, I run 30 Days of Pyhton. Now, in 2020 I super exited to start this challenge' -let regEx = /\d+/ // d with escape character means d not a normal d instead acts a digit -// + means one or more digit numbers, +let txt = 'In 2019, I run 30 Days of Python. Now, in 2020 I super exited to start this challenge' +let regEx = /\d+/ + +// d with escape character means d not a normal d instead acts a digit +// + means one or more digit numbers, // if there is g after that it means global, search everywhere. -console.log(txt.match(regEx)) // ["2", "0", "1", "9", "3", "0", "2", "0", "2", "0"] + +console.log(txt.match(regEx)) // ["2", "0", "1", "9", "3", "0", "2", "0", "2", "0"] console.log(txt.match(/\d+/g)) // ["2019", "30", "2020"] ``` @@ -688,21 +695,23 @@ console.log(string.repeat(10)) // lovelovelovelovelovelovelovelovelovelove // Different python data types // Let's declare different data types -let firstName = 'Asabeneh' // string -let lastName = 'Yetayeh' // string -let country = 'Finland' // string -let city = 'Helsinki' // string -let age = 250 // int, it is not my real age, do not worry about it - -console.log(typeof 'Asabeneh') // str -console.log(typeof firstName) // str -console.log(typeof 10) // number -console.log(typeof 3.14) // number -console.log(typeof true) // boolean -console.log(typeof false) // boolean -console.log(typeof NaN) // number -console.log(typeof undefined) // undefined -console.log(typeof null) // object +let firstName = 'Asabeneh' // string +let lastName = 'Yetayeh' // string +let country = 'Finland' // string +let city = 'Helsinki' // string +let age = 250 // int, it is not my real age, do not worry about it +let job + +console.log(typeof 'Asabeneh') // string +console.log(typeof firstName) // string +console.log(typeof 10) // number +console.log(typeof 3.14) // number +console.log(typeof true) // boolean +console.log(typeof false) // boolean +console.log(typeof NaN) // number +console.log(typeof job) // undefined +console.log(typeof undefined) // undefined +console.log(typeof null) // object ``` ### Changing data type(Casting) @@ -845,7 +854,7 @@ The quote 'There is no exercise better for the heart than reaching down and lift ``` 40. Check if typeof '10' is exactly equal to 10. If not make it exactly equal. -20. Check if parseInt('9.8') is equal to 10 if not make it exactly equal with 10. +41. Check if parseInt('9.8') is equal to 10 if not make it exactly equal with 10. 🎉 CONGRATULATIONS ! 🎉 From 0e8a4aa3befba50d3b36602c1455b43480d9487b Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sun, 5 Jan 2020 01:13:10 +0200 Subject: [PATCH 28/31] content restructured --- 02_Day/02_day_data_types.md | 116 ++++++++++++++++++++++++++---------- 1 file changed, 84 insertions(+), 32 deletions(-) diff --git a/02_Day/02_day_data_types.md b/02_Day/02_day_data_types.md index 9a01ee7..2aaad2a 100644 --- a/02_Day/02_day_data_types.md +++ b/02_Day/02_day_data_types.md @@ -160,13 +160,20 @@ In JavaScript the Math Object provides a lots of methods to work with numbers. ```js const PI = Math.PI -console.log(PI) // 3.141592653589793 -console.log(Math.round(PI)) // 3; to round values to the nearest number -console.log(Math.round(9.81)) // 10 -console.log(Math.floor(PI)) // 3; rounding down -console.log(Math.ceil(PI)) // 4; rounding up -console.log(Math.min(-5, 3, 20, 4,5, 10)) // -5, returns the minimum value -console.log(Math.max(-5, 3, 20, 4,5, 10)) // 20, returns the maximum value + +console.log(PI) // 3.141592653589793 +// Rounding to the closest number +// if above .5 up if less 0.5 down rounding +console.log(Math.round(PI)) // 3; to round values to the nearest number +console.log(Math.round(9.81)) // 10 + +console.log(Math.floor(PI)) // 3; rounding down + +console.log(Math.ceil(PI)) // 4; rounding up + +console.log(Math.min(-5, 3, 20, 4,5, 10)) // -5, returns the minimum value + +console.log(Math.max(-5, 3, 20, 4,5, 10)) // 20, returns the maximum value const randNum = Math.random() // creates random number between 0 to 0.999999 console.log(randNum) @@ -198,7 +205,7 @@ Math.cos(60) #### Random number generator -The JavaScript Math Object has a random() method number generator which generators number from 0 to 0.999999999... +The JavaScript Math Object has a random() method number generator which generates number from 0 to 0.999999999... ```js let randomNum = Math.random() // generates 0 to 0.999 @@ -207,11 +214,11 @@ let randomNum = Math.random() // generates 0 to 0.999 Now, let us see how we can use random() method to generate a random number between 0 and 10 inclusive. ```js -let randomNum = Math.random() // generates 0 to 0.999 +let randomNum = Math.random() // generates 0 to 0.999 let numBtnZeroAndTen = randomNum * 11 -console.log(numBtnZeroAndTen) // this gives: min 0 and max 10.99 +console.log(numBtnZeroAndTen) // this gives: min 0 and max 10.99 let randomNumRoundToFloor = Math.floor(numBtnZeroAndTen) -console.log(randomNumRoundToFloor) // this gives between 0 and 10 +console.log(randomNumRoundToFloor) // this gives between 0 and 10 ``` ## Strings @@ -220,7 +227,7 @@ Strings are texts, which are under **_single_** or **_double_** quote. To declar Lets' see some examples of string: ```js -let space = ' ' // an empty space string +let space = ' ' // an empty space string let firstName = 'Asabeneh' let lastName = 'Yetayeh' let country = 'Finland' @@ -396,24 +403,34 @@ Let us access different characters in 'JavaScript' string. ```js let string = 'JavaScript' let firstLetter = string[0] -console.log(firstLetter) // J -let secondLetter = string[1] // a + +console.log(firstLetter) // J + +let secondLetter = string[1] // a let thirdLetter = string[2] -let lastLetter = string[9] -console.log(lastLetter) // t +let lastLetter = string[9] + +console.log(lastLetter) // t + let lastIndex = string.length - 1 + console.log(lastIndex) // 9 -console.log(string[lastIndex]) // t +console.log(string[lastIndex]) // t ``` 1. *toUpperCase()*: this method changes the string to uppercase letters. ```js let string = 'JavaScript' -console.log(string.toUpperCase()) // JAVASCRIPT + +console.log(string.toUpperCase()) // JAVASCRIPT + let firstName = 'Asabeneh' + console.log(firstName.toUpperCase()) // ASABENEH + let country = 'Finland' + console.log(country.toUpperCase()) // FINLAND ``` @@ -421,10 +438,15 @@ console.log(country.toUpperCase()) // FINLAND ```js let string = 'JavasCript' + console.log(string.toLowerCase()) // javascript + let firstName = 'Asabeneh' + console.log(firstName.toLowerCase()) // asabeneh + let country = 'Finland' + console.log(country.toLowerCase()) // finland ``` @@ -433,6 +455,7 @@ console.log(country.toLowerCase()) // finland ```js let string = 'JavaScript' console.log(string.substr(4,6)) // Script + let country = 'Finland' console.log(country.substr(3, 4)) // land ``` @@ -441,38 +464,49 @@ console.log(country.substr(3, 4)) // land ```js let string = 'JavaScript' -console.log(string.substring(0,4)) // Java + +console.log(string.substring(0,4)) // Java console.log(string.substring(4,10)) // Script -console.log(string.substring(4)) // Script +console.log(string.substring(4)) // Script + let country = 'Finland' + console.log(country.substring(0, 3)) // Fin console.log(country.substring(3, 7)) // land -console.log(country.substring(3)) // land +console.log(country.substring(3)) // land ``` 7. *split()*: The split method splits a string at a specified place. ```js let string = '30 Days Of JavaScipt' + console.log(string.split()) // ["30 Days Of JavaScript"] console.log(string.split(' ')) // ["30", "Days", "Of", "JavaScript"] + let firstName = 'Asabeneh' -console.log(firstName.split()) // ["Asabeneh"] + +console.log(firstName.split()) // ["Asabeneh"] console.log(firstName.split('')) // ["A", "s", "a", "b", "e", "n", "e", "h"] + let countries = 'Finland, Sweden, Norway, Denmark, and Iceland' -console.log(countries.split(',')) // ["Finland", " Sweden", " Norway", " Denmark", " and Iceland"] -console.log(countries.split(', ')) //  ["Finland", "Sweden", "Norway", "Denmark", "and Iceland"] + +console.log(countries.split(',')) // ["Finland", " Sweden", " Norway", " Denmark", " and Iceland"] +console.log(countries.split(', ')) //  ["Finland", "Sweden", "Norway", "Denmark", "and Iceland"] ``` 8. *trim()*: Removes trailing space in the beginning or the end of a string. ```js let string = ' 30 Days Of JavaScript ' + console.log(string) -console.log(string.trim(' ')) // +console.log(string.trim(' ')) + let firstName = ' Asabeneh ' + console.log(firstName) -console.log(firstName.trim()) // +console.log(firstName.trim()) ``` ```sh @@ -486,6 +520,7 @@ Asabeneh ```js let string = '30 Days Of JavaScript' + console.log(string.includes('Days')) // true console.log(string.includes('days')) // false console.log(string.includes('Script')) // true @@ -494,6 +529,7 @@ console.log(string.includes('java')) // false console.log(string.includes('Java')) // true let country = 'Finland' + console.log(country.includes('fin')) // false console.log(country.includes('Fin')) // true console.log(country.includes('land')) // true @@ -509,6 +545,7 @@ string.replace(oldsubstring, newsubstring) ```js let string = '30 Days Of JavaScript' console.log(string.replace('JavaScript', 'Python')) // 30 Days Of Python + let country = 'Finland' console.log(country.replace('Fin', 'Noman')) // Nomanland ``` @@ -521,7 +558,8 @@ string.charAt(index) ```js let string = '30 Days Of JavaScript' -console.log(string.charAt(0)) // 3 +console.log(string.charAt(0)) // 3 + let lastIndex = string.length - 1 console.log(string.charAt(lastIndex)) // t ``` @@ -534,7 +572,8 @@ string.charCodeAt(index) ```js let string = '30 Days Of JavaScript' -console.log(string.charCodeAt(3)) // D ASCII number is 51 +console.log(string.charCodeAt(3)) // D ASCII number is 51 + let lastIndex = string.length - 1 console.log(string.charCodeAt(lastIndex)) // t ASCII is 116 @@ -548,6 +587,7 @@ string.indexOf(substring) ```js let string = '30 Days Of JavaScript' + console.log(string.indexOf('D')) // 3 console.log(string.indexOf('Days')) // 3 console.log(string.indexOf('days')) // -1 @@ -565,6 +605,7 @@ string.lastIndexOf(index) ```js let string = 'I love JavaScript. If you do not love JavaScript what else can you love.' + console.log(string.lastIndexOf('love')) // 67 console.log(string.lastIndexOf('you')) // 63 console.log(string.lastIndexOf('JavaScript')) // 38 @@ -579,6 +620,7 @@ string.concat(substring, substring, substring) ```js let string = '30' console.log(string.concat("Days", "Of", "JavaScript")) // 30DaysOfJavaScript + let country = 'Fin' console.log(country.concat("land")) // Finland ``` @@ -592,11 +634,13 @@ string.startsWith(substring) ```js let string = 'Love is the best to in this world' + console.log(string.startsWith('Love')) // true console.log(string.startsWith('love')) // false console.log(string.startsWith('world')) // false let country = 'Finland' + console.log(country.startsWith('Fin')) // true console.log(country.startsWith('fin')) // false console.log(country.startsWith('land')) // false @@ -610,11 +654,13 @@ string.endsWith(substring) ```js let string = 'Love is the best to in this world' + console.log(string.endsWith('world')) // true console.log(string.endsWith('love')) // false console.log(string.endsWith('in this world')) // true let country = 'Finland' + console.log(country.endsWith('land')) // true console.log(country.endsWith('fin')) // false console.log(country.endsWith('Fin')) // false @@ -699,8 +745,8 @@ let firstName = 'Asabeneh' // string let lastName = 'Yetayeh' // string let country = 'Finland' // string let city = 'Helsinki' // string -let age = 250 // int, it is not my real age, do not worry about it -let job +let age = 250 // number, it is not my real age, do not worry about it +let job // undefined, because a value was not assigned console.log(typeof 'Asabeneh') // string console.log(typeof firstName) // string @@ -726,7 +772,7 @@ We can convert string to number using the following methods: - parseInt() - Number() -- + +- Plus sign(+) ```js let num = '10' @@ -737,12 +783,14 @@ console.log(numInt) // 10 ```js let num = '10' let numInt = Number(num) + console.log(numInt) // 10 ``` ```js let num = '10' let numInt = +num + console.log(numInt) // 10 ``` @@ -753,23 +801,26 @@ We can convert string float to number using the following methods: - parseFloat() - Number() -- + +- Plus sign(+) ```js let num = '9.81' let numFloat = parseFloat(num) + console.log(numFloat) // 9.81 ``` ```js let num = '9.81' let numFloat = Number(num) + console.log(numFloat) // 9.81 ``` ```js let num = '9.81' let numFloat = +num + console.log(numInt) // 9.81 ``` @@ -783,6 +834,7 @@ We use the following method to convert float to int: ```js let num = 9.81 let numInt = parseInt(num) + console.log(numInt) // 9 ``` From d8e0fe2fe9ef60a0135f9d812176a5f0a44bf113 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sun, 5 Jan 2020 01:50:18 +0200 Subject: [PATCH 29/31] content restructured --- 02_Day/02_day_data_types.md | 32 ++-- 03_Day/03_booleans_operators_date.md | 221 +++++++++++++-------------- 2 files changed, 133 insertions(+), 120 deletions(-) diff --git a/02_Day/02_day_data_types.md b/02_Day/02_day_data_types.md index 2aaad2a..c06609f 100644 --- a/02_Day/02_day_data_types.md +++ b/02_Day/02_day_data_types.md @@ -74,14 +74,17 @@ Primitive data types are compared by its values. Let us compare different data v ```js let numOne = 3 let numTwo = 3 + console.log(numOne == numTwo) // true let js = 'JavaScript' let py = 'Python' + console.log(js == py) //false let lightOn = true let lightOff = false + console.log(lightOn == lightOff) // false ``` @@ -93,6 +96,7 @@ Let us see by creating an array. An array is a list of data values in a square b ```js let nums = [1, 2, 3] nums[0] = 10 + console.log(nums) // [10, 2, 3] ``` @@ -101,6 +105,7 @@ As you can see, an array in which a non-primitive data type is mutable. Non-prim ```js let nums = [1, 2, 3] let numbers = [1, 2, 3] + console.log(nums == numbers) // false let userOne = { @@ -108,11 +113,13 @@ name:'Asabeneh', role:'teaching', country:'Finland' } + let userTwo = { name:'Asabeneh', role:'teaching', country:'Finland' } + console.log(userOne == userTwo) ``` @@ -122,6 +129,7 @@ Non-primitive values are referred to as reference types because they are being c ```js let nums = [1, 2, 3] let numbers = nums + console.log(nums == numbers) // true let userOne = { @@ -129,7 +137,9 @@ name:'Asabeneh', role:'teaching', country:'Finland' } + let userTwo = userOne + console.log(userOne == userTwo) // true ``` @@ -151,6 +161,7 @@ const PI = 3.14 // pi a geometrical constant //More Examples const boilingPoint = 100 // temperature in oC, boiling point of water which is a constant const bodyTemp = 37 // oC average human body temperature, which is a constant + console.log(age, gravity, mass, PI, boilingPoint, bodyTemp) ``` @@ -177,7 +188,8 @@ console.log(Math.max(-5, 3, 20, 4,5, 10)) // 20, returns the maximum value const randNum = Math.random() // creates random number between 0 to 0.999999 console.log(randNum) -// Let create random number between 0 to 10 + +// Let us create random number between 0 to 10 const num = Math.floor(Math.random () * 11) // creates random number between 0 and 10 console.log(num) @@ -278,7 +290,9 @@ let language = 'JavaScript' let job = 'teacher' let age = 250 let fullName = firstName + space + lastName + let personInfoOne = fullName + '. I am ' + age + '. I live in ' + country; // ES5 + console.log(personInfoOne) ``` @@ -339,10 +353,10 @@ To create a template string, we use two backticks. We can inject data as express **Example: 1** ```js -console.log(`The sum of 2 and 3 is 5`) +console.log(`The sum of 2 and 3 is 5`) // statically writing the data let a = 2 let b = 3 -console.log(`The sum of ${a} and ${b} is ${a + b}`) +console.log(`The sum of ${a} and ${b} is ${a + b}`) // injecting the data dynamically ``` **Example:2** @@ -389,9 +403,9 @@ Everything in JavaScript is an object. A string is a primitive data type that me ```js let js = 'JavaScript' - console.log(js.length) // 10 + console.log(js.length) // 10 let firstName = 'Asabeneh' - console.log(firstName.length) // 8 + console.log(firstName.length) // 8 ``` 2. *Accessing characters in a string*: We can access each character in a string using its index. In programming, counting starts from 0. The first index of the string is zero, and the last index is one minus the length of the string. @@ -404,18 +418,18 @@ Let us access different characters in 'JavaScript' string. let string = 'JavaScript' let firstLetter = string[0] -console.log(firstLetter) // J +console.log(firstLetter) // J -let secondLetter = string[1] // a +let secondLetter = string[1] // a let thirdLetter = string[2] let lastLetter = string[9] -console.log(lastLetter) // t +console.log(lastLetter) // t let lastIndex = string.length - 1 console.log(lastIndex) // 9 -console.log(string[lastIndex]) // t +console.log(string[lastIndex]) // t ``` 1. *toUpperCase()*: this method changes the string to uppercase letters. diff --git a/03_Day/03_booleans_operators_date.md b/03_Day/03_booleans_operators_date.md index 13a1908..486b810 100644 --- a/03_Day/03_booleans_operators_date.md +++ b/03_Day/03_booleans_operators_date.md @@ -1,7 +1,6 @@ ## Table of Contents -[<< Day 2](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_data_types.md) | [Day 4 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/04_Day/04_day_conditionals.md) --- +[<< Day 2](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/02_Day/02_day_data_types.md) | [Day 4 >>](https://github.com/Asabeneh/30DaysOfJavaScript/blob/master/04_Day/04_day_conditionals.md) ![Thirty Days Of JavaScript](./day_1_3.png) @@ -47,17 +46,17 @@ ## Booleans -A boolean data type represents one of the two values:_true_ or _false_. Boolean value is either true or false. The use of these data types will be clear when you start the comparison operator. Any comparisons return a boolean value which is either true or false. +A boolean data type represents one of the two values:_true_ or _false_. Boolean value is either true or false. The use of these data types will be clear when you start the comparison operator. Any comparisons return a boolean value which is either true or false. **Example: Boolean Values** ```js -let isLightOn = true; -let isRaining = false; -let isHungry = false; -let isMarried = true; -let truValue = 4 > 3 // true -let falseValue = 3 < 4 // false +let isLightOn = true +let isRaining = false +let isHungry = false +let isMarried = true +let truValue = 4 > 3 // true +let falseValue = 3 < 4 // false ``` We agreed that boolean values are either true or false. @@ -67,7 +66,7 @@ We agreed that boolean values are either true or false. - All numbers(positive and negative) are truthy except zero - All strings are truthy - The boolean true - + ### Falsy values - 0 @@ -85,15 +84,15 @@ It is good to remember those truthy values and falsy values. In later section, w If we declare a variable and if we do not assign a value, the value will be undefined. In addition to this, if a function is not returning the value will be undefined. ```js -let firstName; -console.log(firstName); //not defined, because it is not assigned to a value yet +let firstName +console.log(firstName) //not defined, because it is not assigned to a value yet ``` ## Null ```js -let empty = null; -console.log(empty); // -> null , means no value +let empty = null +console.log(empty) // -> null , means no value ``` ## Operators @@ -117,36 +116,38 @@ Arithmetic operators are mathematical operators. - Addition(+): a + b - Subtraction(-): a - b -- Multiplication(*): a * b +- Multiplication(_): a _ b - Division(/): a / b - Modulus(%):a % b - Exponential(**):a ** b ```js -let numOne = 4; -let numTwo = 3; -let sum = numOne + numTwo; -let diff = numOne - numTwo; -let mult = numOne * numTwo; -let div = numOne / numTwo; -let remainder = numOne % numTwo; +let numOne = 4 +let numTwo = 3 +let sum = numOne + numTwo +let diff = numOne - numTwo +let mult = numOne * numTwo +let div = numOne / numTwo +let remainder = numOne % numTwo let powerOf = numOne ** numTwo -console.log(sum, diff, mult, div, remainder, powerOf); // ->7,1,12,1.33,1, 64 -let PI = 3.14; -let radius = 100; // length in meter +console.log(sum, diff, mult, div, remainder, powerOf) // 7,1,12,1.33,1, 64 -const gravity = 9.81; // in m/s2 -let mass = 72; // in Kilogram -const boilingPoint = 100; // temperature in oC, boiling point of water -const bodyTemp = 37; // body temperature in oC +let PI = 3.14 +let radius = 100 // length in meter + +const gravity = 9.81 // in m/s2 +let mass = 72 // in Kilogram +const boilingPoint = 100 // temperature in oC, boiling point of water +const bodyTemp = 37 // body temperature in oC //Let us calculate area of a circle -const areaOfCircle = PI * radius * radius; -console.log(areaOfCircle); // -> 314 m +const areaOfCircle = PI * radius * radius +console.log(areaOfCircle) // 314 m + // Let us calculate weight of an object -const weight = mass * gravity; -console.log(weight); // -> 706.32 N(Newton) +const weight = mass * gravity +console.log(weight) // 706.32 N(Newton) //Concatenating string with numbers using string interpolation /* @@ -156,7 +157,7 @@ console.log(weight); // -> 706.32 N(Newton) */ console.log( `The boiling point of water is ${boilingPoint} oC.\nHuman body temperature is ${bodyTemp} oC.\nThe gravity of earth is ${gravity} m / s2.` -); +) ``` ### Comparison Operators @@ -186,14 +187,13 @@ console.log(0 == ' ') // true, equivalent console.log(0 === '') // false, not exactly the same console.log(0 === false) // false, not exactly the same console.log(1 == true) // true, equivalent -console.log(1 === true ) // false, not exactly the same +console.log(1 === true) // false, not exactly the same console.log(undefined == null) // true console.log(undefined === null) // true console.log(NaN == NaN) // false, not equal console.log(NaN === NaN) // false console.log(typeof NaN) // number - console.log('mango'.length == 'avocado'.length) // false console.log('mango'.length != 'avocado'.length) // true console.log('mango'.length < 'avocado'.length) // true @@ -215,18 +215,17 @@ The following symbols are the common logical operators: ! negates true to false, false to true. ```js - //&& ampersand operator example -const check = 4 > 3 && 10 > 5 // true and true -> true -const check = 4 > 3 && 10 < 5 // true and false -> false -const check = 4 < 3 && 10 < 5 // false and false -> false +const check = 4 > 3 && 10 > 5 // true and true -> true +const check = 4 > 3 && 10 < 5 // true and false -> false +const check = 4 < 3 && 10 < 5 // false and false -> false //|| pipe or operator, example -const check = 4 > 3 || 10 > 5 // true and true -> true -const check = 4 > 3 || 10 < 5 // true and false -> true -const check = 4 < 3 || 10 < 5 // false and false -> false +const check = 4 > 3 || 10 > 5 // true and true -> true +const check = 4 > 3 || 10 < 5 // true and false -> true +const check = 4 < 3 || 10 < 5 // false and false -> false //! Negation examples @@ -245,16 +244,16 @@ In JavaScrip we use the increment operator to increase a value stored in a varia ```js let count = 0 -console.log(++count) // 1 -console.log(count) // 1 +console.log(++count) // 1 +console.log(count) // 1 ``` 1. Post-increment ```js let count = 0 -console.log(count++) // 0 -console.log(count) // 1 +console.log(count++) // 0 +console.log(count) // 1 ``` We use most of the time post-increment. At leas you should remember how to use post-increment operator. @@ -267,16 +266,16 @@ In JavaScrip we use the decrement operator to decrease a value stored in a varia ```js let count = 0 -console.log(--count) // -1 -console.log(count) // -1 +console.log(--count) // -1 +console.log(count) // -1 ``` 2. Post-decrement ```js let count = 0 -console.log(count--) // 0 -console.log(count) // -1 +console.log(count--) // 0 +console.log(count) // -1 ``` #### Ternary Operators @@ -326,7 +325,7 @@ I would like to recommend you to read about operator precendence from this [link ### Window alert() method -As you have seen at very beginning alert() method displays an alert box with a specified message and an OK button. It is a builtin method and it takes on argument. +As you have seen at very beginning alert() method displays an alert box with a specified message and an OK button. It is a builtin method and it takes on argument. ```js alert(message) @@ -340,7 +339,7 @@ Do not use too much alert because it is destructing and annoying, use it just fo ### Window prompt() method -The window prompt methods display a prompt box with an input on your browser to take input values and the input data can be stored in a variable. The prompt() method takes two arguments. The second argument is optional. +The window prompt methods display a prompt box with an input on your browser to take input values and the input data can be stored in a variable. The prompt() method takes two arguments. The second argument is optional. ```js prompt('required text', 'optional text') @@ -376,7 +375,7 @@ _getFullYear(), getMonths(), getDate(), getDay(), getHours(), getMinutes, getSec Once we create time object. The time object will provide information about time. Let us create a time object ```js -const now = new Date () +const now = new Date() console.log(now) // Sat Jan 04 2020 00:56:41 GMT+0200 (Eastern European Standard Time) ``` @@ -384,10 +383,10 @@ We have created a time object and we can access any date time information from t ### Getting full year -Let's extract or get the full from a time object. +Let's extract or get the full from a time object. ```js -const now = new Date () +const now = new Date() console.log(now.getFullYear()) // 2020 ``` @@ -396,7 +395,7 @@ console.log(now.getFullYear()) // 2020 Let's extract or get the month from a time object. ```js -const now = new Date () +const now = new Date() console.log(now.getMonth()) // 0, because the month is January, month(0-11) ``` @@ -405,7 +404,7 @@ console.log(now.getMonth()) // 0, because the month is January, month(0-11) Let's extract or get the date of the month from a time object. ```js -const now = new Date () +const now = new Date() console.log(now.getDate()) // 4, because the day of the month is 4th, day(0-31) ``` @@ -414,8 +413,8 @@ console.log(now.getDate()) // 4, because the day of the month is 4th, day(0-31) Let's extract or get the day of the week from a time object. ```js -const now = new Date () -console.log(now.getDay()) // 6, because the day is Saturday which is the 5th day, +const now = new Date() +console.log(now.getDay()) // 6, because the day is Saturday which is the 5th day, // Getting the weekday as a number (0-6) ``` @@ -424,7 +423,7 @@ console.log(now.getDay()) // 6, because the day is Saturday which is the 5th day Let's extract or get the hours from a time object. ```js -const now = new Date () +const now = new Date() console.log(now.getHours()) // 0, because the time is 00:56:41 ``` @@ -433,7 +432,7 @@ console.log(now.getHours()) // 0, because the time is 00:56:41 Let's extract or get the minutes from a time object. ```js -const now = new Date () +const now = new Date() console.log(now.getMinutes()) // 56, because the time is 00:56:41 ``` @@ -442,7 +441,7 @@ console.log(now.getMinutes()) // 56, because the time is 00:56:41 Let's extract or get the seconds from a time object. ```js -const now = new Date () +const now = new Date() console.log(now.getSeconds()) // 41, because the time is 00:56:41 ``` @@ -450,19 +449,19 @@ console.log(now.getSeconds()) // 41, because the time is 00:56:41 This method give time in milliseconds starting from January 1, 1970. It is also know as Unix time. We can get the unix time in two ways: -1. Using *getTime()* +1. Using _getTime()_ ```js -const now = new Date () // +const now = new Date() // console.log(now.getTime()) // 1578092201341, this is the number of seconds passed from January 1, 1970 to January 4, 2020 00:56:41 ``` -1. Using *Date.now()* +1. Using _Date.now()_ ```js -const allSeconds = Date.now () // +const allSeconds = Date.now() // console.log(allSeconds) // 1578092201341, this is the number of seconds passed from January 1, 1970 to January 4, 2020 00:56:41 -const timeInSeconds = new Date ().getTime() +const timeInSeconds = new Date().getTime() console.log(allSeconds == timeInSeconds) // true ``` @@ -470,16 +469,16 @@ Let us format these values to a human readable time format. **Example:** ```js -const now = new Date (); -const year = now.getFullYear(); // return year -const month = now.getMonth() + 1; // return month(0 - 11) -const date = now.getDate(); // return date (1 - 31) -const hours = now.getHours(); // return number (0 - 23) -const minutes = now.getMinutes();// return number (0 -59) +const now = new Date() +const year = now.getFullYear() // return year +const month = now.getMonth() + 1 // return month(0 - 11) +const date = now.getDate() // return date (1 - 31) +const hours = now.getHours() // return number (0 - 23) +const minutes = now.getMinutes() // return number (0 -59) console.log(`${date}/${month}/${year} ${hours}:${minutes}`) // 4/1/2020 0:56 ``` -🌕 You have boundless energy. You have just completed day 3 challenge and you are three steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. +🌕 You have boundless energy. You have just completed day 3 challenge and you are three steps a head in to your way to greatness. Now do some exercises for your brain and for your muscle. # 💻 Day 3: Exercises @@ -492,43 +491,43 @@ console.log(`${date}/${month}/${year} ${hours}:${minutes}`) // 4/1/2020 0:56 ## 2. Exercises: Arithmetic Operators Part - 1. Write a script that prompt the user to enter base and height of the triangle and calculate an area of a triangle (area = 0.5 x b x h). +1. Write a script that prompt the user to enter base and height of the triangle and calculate an area of a triangle (area = 0.5 x b x h). - ```sh - Enter base: 20 - Enter height: 10 - The area of the triangle is 50 - ``` + ```sh + Enter base: 20 + Enter height: 10 + The area of the triangle is 50 + ``` 1. Write a script that prompt the user to enter side a, side b, and side c of the triangle and and calculate the perimeter of triangle (perimeter = a + b + c) - ```sh - Enter side a: 5 - Enter side b: 4 - Enter side c: 3 - The perimeter of the triangle is 12 - ``` - -2. Get length and width using prompt and calculate an area of rectangle (area = length x width and the perimeter of rectangle (perimeter = 2 x (length + width)) -3. Get radius using prompt and calculate the area of a circle (area = pi x r x r) and circumference of a circle(c = 2 x pi x r) where pi = 3.14. -4. Calculate the slope, x-intercept and y-intercept of y = 2x -2 -5. Slope is (m = y2-y1/x2-x1). Find the slope between point (2, 2) and point(6,10) -6. Compare the slope of above two questions. -7. Calculate the value of y (y = x^2 + 6x + 9). Try to use different x values and figure out at what x value y is 0. -8. Writ a script that prompt a user to enters hours and rate per hour. Calculate pay of the person? - - ```sh - Enter hours: 40 - Enter rate per hour: 28 - Your weekly earning is 1120 - ``` - -9. Write a script that prompt the user to enter number of years. Calculate the number of seconds a person can live. Assume some one lives just hundred years - - ```sh - Enter number of yours you live: 100 - You lived 3153600000 seconds. - ``` + ```sh + Enter side a: 5 + Enter side b: 4 + Enter side c: 3 + The perimeter of the triangle is 12 + ``` + +1. Get length and width using prompt and calculate an area of rectangle (area = length x width and the perimeter of rectangle (perimeter = 2 x (length + width)) +1. Get radius using prompt and calculate the area of a circle (area = pi x r x r) and circumference of a circle(c = 2 x pi x r) where pi = 3.14. +1. Calculate the slope, x-intercept and y-intercept of y = 2x -2 +1. Slope is (m = y2-y1/x2-x1). Find the slope between point (2, 2) and point(6,10) +1. Compare the slope of above two questions. +1. Calculate the value of y (y = x^2 + 6x + 9). Try to use different x values and figure out at what x value y is 0. +1. Writ a script that prompt a user to enters hours and rate per hour. Calculate pay of the person? + + ```sh + Enter hours: 40 + Enter rate per hour: 28 + Your weekly earning is 1120 + ``` + +1. Write a script that prompt the user to enter number of years. Calculate the number of seconds a person can live. Assume some one lives just hundred years + + ```sh + Enter number of yours you live: 100 + You lived 3153600000 seconds. + ``` ## 3. Exercises: Booleans Part @@ -539,7 +538,7 @@ Boolean value is either true or false. ## 4. Exercises: Comparison Operators -Figure out the result of the following comparison expression first without using console.log(). After you decide the result confirm it using console.log() +Figure out the result of the following comparison expression first without using console.log(). After you decide the result confirm it using console.log() 1. 4 > 3 1. 4 >= 3 @@ -552,7 +551,7 @@ Figure out the result of the following comparison expression first without using 1. 4 != '4' 1. 4 == '4' 1. 4 === '4' -Find the length of python and jargon and make a falsy comparison statement. + Find the length of python and jargon and make a falsy comparison statement. ## 5. Exercises: Logical Operators @@ -616,7 +615,7 @@ You are 25. You are old enough to drive 1. What is the minutes now? 1. Find out the numbers of seconds elapsed from January 1, 1970 to now. 1. Create a human readable time format - 1. YYY-MM-DD HH:mm:ss + 1. YYY-MM-DD HH:mm:ss 2. DD-MM-YYYY HH:mm:ss 3. DD/MM/YYY HH:mm:ss From 24752f9b2963f797beee18d7ac7d6e919e08d371 Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sun, 5 Jan 2020 02:01:19 +0200 Subject: [PATCH 30/31] content restructured --- 02_Day/02_day_data_types.md | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/02_Day/02_day_data_types.md b/02_Day/02_day_data_types.md index c06609f..66e98ed 100644 --- a/02_Day/02_day_data_types.md +++ b/02_Day/02_day_data_types.md @@ -154,13 +154,13 @@ Lets' see some examples of Numbers. ```js let age = 35 -const gravity = 9.81 //we use const for non-changing values, gravitational constant in m/s2 -let mass = 72 // mass in Kilogram -const PI = 3.14 // pi a geometrical constant +const gravity = 9.81 //we use const for non-changing values, gravitational constant in m/s2 +let mass = 72 // mass in Kilogram +const PI = 3.14 // pi a geometrical constant //More Examples const boilingPoint = 100 // temperature in oC, boiling point of water which is a constant -const bodyTemp = 37 // oC average human body temperature, which is a constant +const bodyTemp = 37 // oC average human body temperature, which is a constant console.log(age, gravity, mass, PI, boilingPoint, bodyTemp) ``` @@ -173,14 +173,17 @@ In JavaScript the Math Object provides a lots of methods to work with numbers. const PI = Math.PI console.log(PI) // 3.141592653589793 + // Rounding to the closest number // if above .5 up if less 0.5 down rounding -console.log(Math.round(PI)) // 3; to round values to the nearest number + +console.log(Math.round(PI)) // 3 to round values to the nearest number + console.log(Math.round(9.81)) // 10 -console.log(Math.floor(PI)) // 3; rounding down +console.log(Math.floor(PI)) // 3 rounding down -console.log(Math.ceil(PI)) // 4; rounding up +console.log(Math.ceil(PI)) // 4 rounding up console.log(Math.min(-5, 3, 20, 4,5, 10)) // -5, returns the minimum value @@ -190,16 +193,21 @@ const randNum = Math.random() // creates random number between 0 to 0.999999 console.log(randNum) // Let us create random number between 0 to 10 + const num = Math.floor(Math.random () * 11) // creates random number between 0 and 10 console.log(num) //Absolute value -console.log(Math.abs(-10)) //10 +console.log(Math.abs(-10)) //10 + //Square root console.log(Math.sqrt(100)) // 10 + console.log(Math.sqrt(2)) //1.4142135623730951 + // Power console.log(Math.pow(3, 2)) // 9 + console.log(Math.E) // 2.718 // Logarithm @@ -228,7 +236,9 @@ Now, let us see how we can use random() method to generate a random number betwe ```js let randomNum = Math.random() // generates 0 to 0.999 let numBtnZeroAndTen = randomNum * 11 + console.log(numBtnZeroAndTen) // this gives: min 0 and max 10.99 + let randomNumRoundToFloor = Math.floor(numBtnZeroAndTen) console.log(randomNumRoundToFloor) // this gives between 0 and 10 ``` @@ -269,7 +279,6 @@ console.log(fullName); ``` ```sh -// out Asabeneh Yetayeh ``` @@ -709,8 +718,6 @@ console.log(string.match('love')) ``` ```sh -//output - ["love", index: 2, input: "I love JavaScript. If you do not love JavaScript what else can you love.", groups: undefined] ``` From 5b047b93f46a9b50f22d9e258c4b5a24ec4a035d Mon Sep 17 00:00:00 2001 From: Asabeneh Date: Sun, 5 Jan 2020 02:06:16 +0200 Subject: [PATCH 31/31] content restructured --- 02_Day/02_day_data_types.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/02_Day/02_day_data_types.md b/02_Day/02_day_data_types.md index 66e98ed..bc8c7c1 100644 --- a/02_Day/02_day_data_types.md +++ b/02_Day/02_day_data_types.md @@ -708,7 +708,10 @@ let patternOne = /love/ // with out any flag let patternTwo = /love/gi // g-means to search in the whole text, i - case insensitive ``` +Match syntax + ```js +// syntax string.match(substring) ``` @@ -726,7 +729,7 @@ let pattern = /love/gi console.log(string.match(pattern)) // ["love", "love", "love"] ``` -Let us extract numbers from text using regular expression. This is not regular expression section, no panic. +Let us extract numbers from text using regular expression. This is not regular expression section, no panic, we will cover regular expression in other section. ```js let txt = 'In 2019, I run 30 Days of Python. Now, in 2020 I super exited to start this challenge' @@ -740,7 +743,7 @@ console.log(txt.match(regEx)) // ["2", "0", "1", "9", "3", "0", "2", "0", "2", console.log(txt.match(/\d+/g)) // ["2019", "30", "2020"] ``` -20. *repeat()*: it takes a number argument and it returned the repeated version of the string. +20. *repeat()*: it takes a number argument and it returned the repeated version of the string. ```js string.repeat(n)