All language subtitles for 12. Coding Challenge 1

af Afrikaans
ak Akan
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bem Bemba
bn Bengali
bh Bihari
bs Bosnian
br Breton
bg Bulgarian
km Cambodian
ca Catalan
ceb Cebuano
chr Cherokee
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
ee Ewe
fo Faroese
tl Filipino
fi Finnish
fr French
fy Frisian
gaa Ga
gl Galician
ka Georgian
de German
el Greek
gn Guarani
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ia Interlingua
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
rw Kinyarwanda
rn Kirundi
kg Kongo
ko Korean
kri Krio (Sierra Leone)
ku Kurdish
ckb Kurdish (Soranî)
ky Kyrgyz
lo Laothian
la Latin
lv Latvian
ln Lingala
lt Lithuanian
loz Lozi
lg Luganda
ach Luo
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mfe Mauritian Creole
mo Moldavian
mn Mongolian
my Myanmar (Burmese)
sr-ME Montenegrin
ne Nepali
pcm Nigerian Pidgin
nso Northern Sotho
no Norwegian
nn Norwegian (Nynorsk)
oc Occitan
or Oriya
om Oromo
ps Pashto
fa Persian Download
pl Polish
pt-BR Portuguese (Brazil)
pt Portuguese (Portugal)
pa Punjabi
qu Quechua
ro Romanian
rm Romansh
nyn Runyakitara
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
sh Serbo-Croatian
st Sesotho
tn Setswana
crs Seychellois Creole
sn Shona
sd Sindhi
si Sinhalese
sk Slovak
sl Slovenian
so Somali
es Spanish
es-419 Spanish (Latin American)
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
tt Tatar
te Telugu
th Thai
ti Tigrinya
to Tonga
lua Tshiluba
tum Tumbuka
tr Turkish
tk Turkmen
tw Twi
ug Uighur
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
wo Wolof
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 1 00:00:00,824 --> 00:00:03,540 Welcome to the first coding challenge 2 2 00:00:03,540 --> 00:00:07,980 of this section and also in a long time actually, 3 3 00:00:07,980 --> 00:00:10,230 and this one is gonna be a big one 4 4 00:00:10,230 --> 00:00:12,533 and so let's get started right away. 5 5 00:00:14,550 --> 00:00:17,480 And in this challenge you gonna build a function, 6 6 00:00:17,480 --> 00:00:18,490 'where am I'. 7 7 00:00:18,490 --> 00:00:21,460 Which then displays a country on the page, 8 8 00:00:21,460 --> 00:00:24,230 but based only on the GPS coordinates 9 9 00:00:24,230 --> 00:00:26,940 that you provide to the function. 10 10 00:00:26,940 --> 00:00:28,090 All right? 11 11 00:00:28,090 --> 00:00:31,930 So instead of providing a real country name like Portugal, 12 12 00:00:31,930 --> 00:00:34,370 all you will provide is coordinates 13 13 00:00:34,370 --> 00:00:36,290 of any place on the world. 14 14 00:00:36,290 --> 00:00:38,120 And based on these coordinates, 15 15 00:00:38,120 --> 00:00:40,160 then a country will be rendered, 16 16 00:00:40,160 --> 00:00:42,320 just like we have been doing. 17 17 00:00:42,320 --> 00:00:43,240 All right? 18 18 00:00:43,240 --> 00:00:46,690 And so for that, we are going to use a second API 19 19 00:00:46,690 --> 00:00:50,310 to basically geocode coordinates. 20 20 00:00:50,310 --> 00:00:52,083 And so here are your tasks. 21 21 00:00:52,930 --> 00:00:55,700 So, again create a function 'where am I', 22 22 00:00:55,700 --> 00:00:59,213 which takes as inputs, the latitude and longitude. 23 23 00:01:00,210 --> 00:01:03,270 So coordinates, as you already know 24 24 00:01:03,270 --> 00:01:07,050 and that's always, we have some test data down below. 25 25 00:01:07,050 --> 00:01:08,870 Then the next step, 26 26 00:01:08,870 --> 00:01:13,270 once you've got these coordinates is to do reverse geocoding 27 27 00:01:13,270 --> 00:01:15,060 on these coordinates 28 28 00:01:15,060 --> 00:01:18,180 and reverse geocoding means to convert coordinates 29 29 00:01:18,180 --> 00:01:20,140 to a meaningful location, 30 30 00:01:20,140 --> 00:01:23,220 for example, a city or a country name. 31 31 00:01:23,220 --> 00:01:27,083 And so the API that we're gonna use for that is this one. 32 32 00:01:27,960 --> 00:01:31,891 So go to this URL, Geocode.xyz, 33 33 00:01:31,891 --> 00:01:34,223 and then here click on API. 34 34 00:01:35,150 --> 00:01:37,500 And so down here you then have the format 35 35 00:01:37,500 --> 00:01:39,880 of the URL that you need to use, 36 36 00:01:39,880 --> 00:01:42,263 in order to do reverse geocoding. 37 37 00:01:43,550 --> 00:01:44,383 All right? 38 38 00:01:44,383 --> 00:01:49,220 So the URL format is simply this one here, 39 39 00:01:49,220 --> 00:01:51,488 but instead of XML, 40 40 00:01:51,488 --> 00:01:52,973 you should use JSON. 41 41 00:01:53,900 --> 00:01:55,833 So that's exactly what we have here. 42 42 00:01:57,302 --> 00:01:58,350 All right? 43 43 00:01:58,350 --> 00:02:02,210 So to do this, you should use the fetch API of course, 44 44 00:02:02,210 --> 00:02:05,320 and then also promises just like we have been doing 45 45 00:02:05,320 --> 00:02:07,860 in the last couple of videos. 46 46 00:02:07,860 --> 00:02:10,943 However, do not use the JSON function 47 47 00:02:10,943 --> 00:02:12,950 that we created previously. 48 48 00:02:12,950 --> 00:02:14,790 So that would be cheating, 49 49 00:02:14,790 --> 00:02:18,440 because it would make this whole challenge too easy. 50 50 00:02:18,440 --> 00:02:21,620 Next, once you have the data take a look at it, 51 51 00:02:21,620 --> 00:02:25,200 and then using the data print a message like this here 52 52 00:02:25,200 --> 00:02:26,183 to the console. 53 53 00:02:27,060 --> 00:02:30,800 Then chain of catch method to the end of the promise 54 54 00:02:30,800 --> 00:02:33,963 and log any errors that might occur to the console. 55 55 00:02:35,220 --> 00:02:39,420 Then finally there's one important thing about this API, 56 56 00:02:39,420 --> 00:02:41,410 which is that it only allows you 57 57 00:02:41,410 --> 00:02:44,350 to make three requests per second. 58 58 00:02:44,350 --> 00:02:47,000 So if you reload the page really fast, 59 59 00:02:47,000 --> 00:02:50,610 then you will get an error with the code four or three. 60 60 00:02:50,610 --> 00:02:53,290 And this is an error with the request. 61 61 00:02:53,290 --> 00:02:55,783 So it's a little bit like the four or four error, 62 62 00:02:55,783 --> 00:02:57,680 that we worked on before. 63 63 00:02:57,680 --> 00:02:58,513 Remember? 64 64 00:02:59,380 --> 00:03:02,190 So the fetch function does not reject the promise 65 65 00:03:02,190 --> 00:03:03,660 in this case, 66 66 00:03:03,660 --> 00:03:06,740 and so you basically have to do that manually, 67 67 00:03:06,740 --> 00:03:08,403 and so that is step five. 68 68 00:03:09,630 --> 00:03:12,580 And so with that, you completed part one. 69 69 00:03:12,580 --> 00:03:16,610 So part one is basically about reverse geocoding. 70 70 00:03:16,610 --> 00:03:20,450 And then in part two it's time to use the data that you get 71 71 00:03:20,450 --> 00:03:23,383 from step number one, to render a country. 72 72 00:03:24,570 --> 00:03:29,170 And so take the relevant attribute from the geocoding API 73 73 00:03:29,170 --> 00:03:33,280 and plug it into the countries API that we have been using. 74 74 00:03:33,280 --> 00:03:36,010 And just like we have been doing rendered a country 75 75 00:03:36,010 --> 00:03:38,123 and also catch any errors. 76 76 00:03:39,110 --> 00:03:42,420 And for this one, you can actually even copy the code. 77 77 00:03:42,420 --> 00:03:45,120 So there's no needs to type the same code, 78 78 00:03:45,120 --> 00:03:46,930 at least if you're in a hurry. 79 79 00:03:46,930 --> 00:03:49,610 So if you want to write the same code again 80 80 00:03:49,610 --> 00:03:51,400 of course that's still great 81 81 00:03:51,400 --> 00:03:53,760 because that will help your muscle memory 82 82 00:03:53,760 --> 00:03:56,890 to really internalize these concepts. 83 83 00:03:56,890 --> 00:03:58,330 Now if for any reason, 84 84 00:03:58,330 --> 00:04:00,373 by the time you're watching this course 85 85 00:04:00,373 --> 00:04:03,080 this API here is no longer working. 86 86 00:04:03,080 --> 00:04:08,060 Then please just Google for another reverse geocoding API. 87 87 00:04:08,060 --> 00:04:11,033 So I'm sure there should be another one that you can use. 88 88 00:04:12,260 --> 00:04:13,100 Okay? 89 89 00:04:13,100 --> 00:04:15,540 But anyway, once you have all of this done, 90 90 00:04:15,540 --> 00:04:18,820 then you should test your function with these, 91 91 00:04:18,820 --> 00:04:21,260 three tests, data coordinates. 92 92 00:04:21,260 --> 00:04:23,640 So hopefully you can complete this challenge 93 93 00:04:23,640 --> 00:04:26,020 and have some fun along the way. 94 94 00:04:26,020 --> 00:04:27,770 So I designed this one too, 95 95 00:04:27,770 --> 00:04:30,430 one more time, be fun for you. 96 96 00:04:30,430 --> 00:04:31,769 So go have some fun now. 97 97 00:04:31,769 --> 00:04:34,453 And I see you back here once you're ready. 98 98 00:04:38,680 --> 00:04:40,040 All right. 99 99 00:04:40,040 --> 00:04:44,310 So here I am back and here goes my solution. 100 100 00:04:44,310 --> 00:04:48,620 So 'where am I' is the function that we're gonna create 101 101 00:04:48,620 --> 00:04:50,870 and attach you, hopefully create it yourself. 102 102 00:04:51,890 --> 00:04:54,409 And so if your coat works perfectly then, 103 103 00:04:54,409 --> 00:04:56,910 there's actually not even a need 104 104 00:04:56,910 --> 00:04:59,323 to watch this video probably to the end. 105 105 00:05:00,520 --> 00:05:03,980 But anyway, let's now take this URL format 106 106 00:05:03,980 --> 00:05:07,583 and then do a fetch request to this URL. 107 107 00:05:09,580 --> 00:05:13,590 So fetch here, let's use a template string 108 108 00:05:13,590 --> 00:05:16,853 because now here we need to plug in a latitude. 109 109 00:05:20,480 --> 00:05:24,723 And then here after the comma, we need the longitude. 110 110 00:05:26,620 --> 00:05:29,000 All right, then on this, 111 111 00:05:29,000 --> 00:05:33,350 We call the then method and here we get to response. 112 112 00:05:33,350 --> 00:05:36,180 Let's just call it res for now. 113 113 00:05:36,180 --> 00:05:40,640 And then immediately we return res.json, 114 114 00:05:40,640 --> 00:05:43,970 which remember we'll return a new promise. 115 115 00:05:43,970 --> 00:05:47,510 And it is this one, which then we'll get the data, 116 116 00:05:47,510 --> 00:05:51,430 because the data is going to be the resolved value 117 117 00:05:51,430 --> 00:05:52,823 of this promise. 118 118 00:05:54,380 --> 00:05:56,470 Right? So that's nothing you, 119 119 00:05:56,470 --> 00:05:59,279 and so let's take a look at the data here. 120 120 00:05:59,279 --> 00:06:00,803 All right. 121 121 00:06:03,160 --> 00:06:04,623 So let's reload here. 122 122 00:06:05,460 --> 00:06:10,460 Oh, and of course I need to call this function indeed. 123 123 00:06:11,840 --> 00:06:16,490 So let's grab these coordinates, give it a safe. 124 124 00:06:16,490 --> 00:06:19,403 And so now it actually already worked. 125 125 00:06:21,120 --> 00:06:22,370 All right. 126 126 00:06:22,370 --> 00:06:23,610 So let's open it 127 127 00:06:23,610 --> 00:06:26,023 and let's see what kind of stuff we have here. 128 128 00:06:26,860 --> 00:06:28,680 So we have the city, 129 129 00:06:28,680 --> 00:06:30,640 we have the, 130 130 00:06:30,640 --> 00:06:33,620 basically the confidence that this data is correct, 131 131 00:06:33,620 --> 00:06:36,053 which is 90%, which is pretty good. 132 132 00:06:36,900 --> 00:06:38,500 So the country is Germany. 133 133 00:06:38,500 --> 00:06:42,440 And then here we have all kinds of stuff, 134 134 00:06:42,440 --> 00:06:45,160 but what matters is actually the country, 135 135 00:06:45,160 --> 00:06:46,750 at least for part two, 136 136 00:06:46,750 --> 00:06:49,190 which is gonna be to render the country. 137 137 00:06:49,190 --> 00:06:52,720 But for now, the task is to lock to the console as string. 138 138 00:06:52,720 --> 00:06:56,310 You are in city and then country. 139 139 00:06:56,310 --> 00:06:58,083 So like in Berlin, Germany. 140 140 00:06:59,200 --> 00:07:00,450 Now, okay? 141 141 00:07:00,450 --> 00:07:01,893 So let's do that. 142 142 00:07:03,790 --> 00:07:05,773 So you are in, 143 143 00:07:07,440 --> 00:07:08,490 and then (data.city), 144 144 00:07:12,087 --> 00:07:14,837 (data.country), 145 145 00:07:16,453 --> 00:07:18,036 country, like this, 146 146 00:07:19,534 --> 00:07:21,350 and all right. 147 147 00:07:21,350 --> 00:07:23,363 So we are in Berlin, Germany. 148 148 00:07:24,880 --> 00:07:28,523 Let's actually already do this with the other coordinates. 149 149 00:07:32,580 --> 00:07:37,580 So let's see what countries we are in. 150 150 00:07:38,150 --> 00:07:39,623 I actually have no idea. 151 151 00:07:41,500 --> 00:07:42,750 All right. 152 152 00:07:42,750 --> 00:07:44,913 So we get undefined, undefined. 153 153 00:07:45,760 --> 00:07:47,490 And so this is actually the problem that 154 154 00:07:47,490 --> 00:07:49,643 I was mentioning right at the beginning. 155 155 00:07:50,680 --> 00:07:55,680 So, this one where the API, sorry. 156 156 00:07:57,130 --> 00:08:01,410 So where the API only allows three requests per second. 157 157 00:08:01,410 --> 00:08:04,880 And so, now we got this error four or three. 158 158 00:08:04,880 --> 00:08:08,011 And so indeed it is exactly this one. 159 159 00:08:08,011 --> 00:08:09,090 All right? 160 160 00:08:09,090 --> 00:08:12,400 And so one more time the fetch function 161 161 00:08:12,400 --> 00:08:14,920 is not correctly handling this error. 162 162 00:08:14,920 --> 00:08:17,120 So it is not rejecting the promise, 163 163 00:08:17,120 --> 00:08:20,250 even though this clearly is an error. 164 164 00:08:20,250 --> 00:08:24,143 And so as you already know, we need to now manually do that. 165 165 00:08:27,990 --> 00:08:30,260 So here we need to now return. 166 166 00:08:30,260 --> 00:08:33,520 And just to make sure let's take a look at the response 167 167 00:08:34,700 --> 00:08:36,910 and this doesn't always happen. 168 168 00:08:36,910 --> 00:08:37,743 Okay. 169 169 00:08:37,743 --> 00:08:40,850 And so in this case, it actually worked just fine. 170 170 00:08:40,850 --> 00:08:44,883 So one of this error is Cape town South Africa, 171 171 00:08:45,740 --> 00:08:48,563 and the other one is Mumbai in India. 172 172 00:08:49,830 --> 00:08:51,400 All right? 173 173 00:08:51,400 --> 00:08:54,913 So let's try to reload again, very fast here. 174 174 00:08:55,934 --> 00:08:58,233 And so now we get that error again. 175 175 00:08:59,380 --> 00:09:00,940 Okay? 176 176 00:09:00,940 --> 00:09:03,350 So where's that response? 177 177 00:09:05,260 --> 00:09:10,260 So the one that's associated to 13.381. 178 178 00:09:11,170 --> 00:09:12,810 So that's this one. 179 179 00:09:12,810 --> 00:09:15,230 And so one more time you get that okay. 180 180 00:09:15,230 --> 00:09:17,020 Is false. 181 181 00:09:17,020 --> 00:09:20,360 So let's use that to our advantage. 182 182 00:09:20,360 --> 00:09:23,795 So if res.okay, 183 183 00:09:23,795 --> 00:09:25,200 is false, 184 184 00:09:25,200 --> 00:09:29,510 then throw new error 185 185 00:09:30,470 --> 00:09:35,470 with the error message problem with geocoding. 186 186 00:09:37,440 --> 00:09:42,440 And again, let's actually include the status code here. 187 187 00:09:43,798 --> 00:09:44,631 All right? 188 188 00:09:45,550 --> 00:09:48,560 So, here we are throwing a new error. 189 189 00:09:48,560 --> 00:09:50,700 And so we are rejecting this promise, 190 190 00:09:50,700 --> 00:09:52,373 that's gonna be returned here, 191 191 00:09:53,360 --> 00:09:57,080 but we are, as of now not catching it anywhere. 192 192 00:09:57,080 --> 00:09:58,280 And so at this point 193 193 00:09:58,280 --> 00:10:01,510 we would have an unhandled promise rejection. 194 194 00:10:01,510 --> 00:10:03,410 And actually, let me show that to you. 195 195 00:10:04,990 --> 00:10:08,080 So I need to save this a bit faster 196 196 00:10:08,080 --> 00:10:09,763 in order to create the error. 197 197 00:10:12,140 --> 00:10:16,173 So, sometimes it's not that easy to catch it. 198 198 00:10:17,560 --> 00:10:22,230 Let's do it really fast here now, all right. 199 199 00:10:22,230 --> 00:10:25,503 So now you get uncaught promise, basically. 200 200 00:10:26,860 --> 00:10:29,950 So the error message is already the one that we want, 201 201 00:10:29,950 --> 00:10:32,700 but it should not be uncaught. 202 202 00:10:32,700 --> 00:10:33,533 Right? 203 203 00:10:33,533 --> 00:10:37,863 And so, indeed we need to catch any promise rejection. 204 204 00:10:39,590 --> 00:10:41,033 And so let's do that. 205 205 00:10:43,220 --> 00:10:45,950 And all I'm gonna do in this case is simply log it 206 206 00:10:45,950 --> 00:10:47,653 to the console as an error, 207 207 00:10:49,150 --> 00:10:52,853 simply the error.message. 208 208 00:10:53,870 --> 00:10:56,963 And then I will again, like add an emoji here, 209 209 00:10:57,980 --> 00:11:00,483 just so we know that it's our own message. 210 210 00:11:02,570 --> 00:11:03,410 Okay. 211 211 00:11:03,410 --> 00:11:05,573 Something is missing here apparently. 212 212 00:11:08,150 --> 00:11:11,620 So here again, we get problem with geocoding. 213 213 00:11:11,620 --> 00:11:14,680 And so now we successfully handled the error 214 214 00:11:14,680 --> 00:11:17,590 and could now do something more meaningful with it. 215 215 00:11:17,590 --> 00:11:19,034 And if we had to like, 216 216 00:11:19,034 --> 00:11:22,860 again displaying some kind of error message 217 217 00:11:22,860 --> 00:11:24,250 or logging this error 218 218 00:11:24,250 --> 00:11:27,050 in some error tracking application. 219 219 00:11:27,050 --> 00:11:28,330 Now, okay. 220 220 00:11:28,330 --> 00:11:29,410 So I think with this, 221 221 00:11:29,410 --> 00:11:32,113 we actually already completed part one. 222 222 00:11:33,050 --> 00:11:37,490 So we did four and five in the opposite order, 223 223 00:11:37,490 --> 00:11:39,220 but that's okay. 224 224 00:11:39,220 --> 00:11:41,500 And so now it's time to use this data 225 225 00:11:41,500 --> 00:11:42,833 to render a country. 226 226 00:11:43,809 --> 00:11:46,623 And so this is essentially what we already did before. 227 227 00:11:47,530 --> 00:11:50,383 So I'm just gonna come here and copy that. 228 228 00:11:52,140 --> 00:11:54,963 So, let's see where that is. 229 229 00:11:56,560 --> 00:11:58,343 Well, it's even more up there, 230 230 00:11:59,480 --> 00:12:00,530 or actually it's not, 231 231 00:12:04,730 --> 00:12:07,730 so actually I will just copy this part here 232 232 00:12:07,730 --> 00:12:09,023 of the error handling. 233 233 00:12:09,890 --> 00:12:11,763 Oh, and actually I can get all of it. 234 234 00:12:14,060 --> 00:12:15,270 Okay? 235 235 00:12:15,270 --> 00:12:17,343 So let's paste that here then, 236 236 00:12:19,760 --> 00:12:23,640 let's get rid of these comments, 237 237 00:12:23,640 --> 00:12:27,113 and of course now here we need to do a new fetch. 238 238 00:12:28,410 --> 00:12:30,513 So return fetch, 239 239 00:12:31,680 --> 00:12:35,020 and then, well actually I need to go back 240 240 00:12:35,020 --> 00:12:36,883 and get the country as well. 241 241 00:12:38,600 --> 00:12:41,943 So yeah, that's essentially this URL here. 242 242 00:12:47,840 --> 00:12:48,673 Okay. 243 243 00:12:51,350 --> 00:12:55,023 So let's save it I'm not sure if it's gonna work yet. 244 244 00:12:56,900 --> 00:12:57,940 And it doesn't. 245 245 00:12:57,940 --> 00:12:58,800 And that's of course, 246 246 00:12:58,800 --> 00:13:01,003 because this country here doesn't exist. 247 247 00:13:01,930 --> 00:13:05,610 So the country that we need is stored in data.country. 248 248 00:13:08,020 --> 00:13:10,830 And so, here we are now logging this string, 249 249 00:13:10,830 --> 00:13:13,180 just like we were doing before. 250 250 00:13:13,180 --> 00:13:15,300 And then based on that country 251 251 00:13:15,300 --> 00:13:20,130 we have our next fecth here, which we will then return. 252 252 00:13:20,130 --> 00:13:24,970 And then here we have a dead part where we handle the error, 253 253 00:13:24,970 --> 00:13:26,640 if the country cannot be found 254 254 00:13:27,650 --> 00:13:31,163 and finally here then we render that country. 255 255 00:13:33,450 --> 00:13:35,530 But it is not gonna be a neighbor. 256 256 00:13:35,530 --> 00:13:37,770 So let's get rid of this part. 257 257 00:13:37,770 --> 00:13:40,973 And up there, we call it response simply res. 258 258 00:13:42,200 --> 00:13:44,300 So let's do the same here. 259 259 00:13:44,300 --> 00:13:47,373 And for now let's test it only with one testing data. 260 260 00:13:48,830 --> 00:13:50,530 So let's see. 261 261 00:13:50,530 --> 00:13:52,920 And now we still get an error, 262 262 00:13:52,920 --> 00:13:56,423 cannot read properties, zero of undefined. 263 263 00:13:57,370 --> 00:13:59,373 So where does that come from? 264 264 00:14:01,930 --> 00:14:04,870 And so this stack trace here, 265 265 00:14:04,870 --> 00:14:07,330 is once again not really helpful, 266 266 00:14:07,330 --> 00:14:10,800 but I think that I still know the answer 267 267 00:14:10,800 --> 00:14:13,040 and that is because here we actually needed 268 268 00:14:13,040 --> 00:14:15,603 to take the first element of the array. 269 269 00:14:17,910 --> 00:14:19,393 If I remember correctly, 270 270 00:14:21,030 --> 00:14:23,853 well, now nothing happened. 271 271 00:14:24,800 --> 00:14:27,320 Oh, but I think I know why. 272 272 00:14:27,320 --> 00:14:29,310 And the reason for that is that, 273 273 00:14:29,310 --> 00:14:31,783 previously we had this finally here. 274 274 00:14:32,820 --> 00:14:36,430 So we had this finally which set the country's container, 275 275 00:14:36,430 --> 00:14:38,570 a perversity back to one. 276 276 00:14:38,570 --> 00:14:41,933 And as we did that, we removed this from here. 277 277 00:14:43,900 --> 00:14:45,650 So right here. 278 278 00:14:45,650 --> 00:14:49,530 So basically now we should set this back here, 279 279 00:14:49,530 --> 00:14:53,440 so that we can be back to using it in the future. 280 280 00:14:53,440 --> 00:14:55,170 And so if I saved us now, 281 281 00:14:55,170 --> 00:14:56,800 Oh, beautiful, 282 282 00:14:56,800 --> 00:14:58,490 there you have it. 283 283 00:14:58,490 --> 00:15:01,070 And this is really amazing. 284 284 00:15:01,070 --> 00:15:03,860 So just using the GPS coordinates, 285 285 00:15:03,860 --> 00:15:06,820 we can now determine the country that we are in. 286 286 00:15:06,820 --> 00:15:09,200 And then also display it along with a bunch 287 287 00:15:09,200 --> 00:15:11,430 of information about the country, 288 288 00:15:11,430 --> 00:15:12,653 here on our page, 289 289 00:15:13,540 --> 00:15:16,350 and all thanks to the power of APIs 290 290 00:15:16,350 --> 00:15:18,903 and also asynchronous JavaScript. 291 291 00:15:19,960 --> 00:15:22,713 So let's now also test with these two. 292 292 00:15:25,090 --> 00:15:26,330 Now, right? 293 293 00:15:26,330 --> 00:15:28,810 But now here in one of them, 294 294 00:15:28,810 --> 00:15:31,830 we actually got an error with geocoding. 295 295 00:15:31,830 --> 00:15:33,890 And again, the reason for that is, 296 296 00:15:33,890 --> 00:15:37,000 that we can only do three requests a second. 297 297 00:15:37,000 --> 00:15:39,883 And so sometimes this 10 doesn't really work. 298 298 00:15:41,070 --> 00:15:43,333 Now, but now we actually got all three. 299 299 00:15:44,650 --> 00:15:49,093 Now this one here for India looks a bit weird, 300 300 00:15:51,270 --> 00:15:52,530 right? 301 301 00:15:52,530 --> 00:15:55,890 So this one is India but when we get the data for India, 302 302 00:15:55,890 --> 00:15:59,470 then apparently because this country also has Indian 303 303 00:15:59,470 --> 00:16:01,790 in its name, this is then gonna be 304 304 00:16:01,790 --> 00:16:03,593 the first country that is found, 305 305 00:16:05,100 --> 00:16:05,940 right. 306 306 00:16:05,940 --> 00:16:08,453 So there's probably multiple countries for India, 307 307 00:16:09,290 --> 00:16:12,090 but yeah, that doesn't really matter here in this case, 308 308 00:16:12,090 --> 00:16:15,563 if you want you can just use some other coordinates here. 309 309 00:16:16,450 --> 00:16:17,510 All right? 310 310 00:16:17,510 --> 00:16:20,500 But anyway again, I hope you had some fun 311 311 00:16:20,500 --> 00:16:23,860 and this was a great use case for how we can actually use, 312 312 00:16:23,860 --> 00:16:26,000 multiple APIs in sequence 313 313 00:16:26,000 --> 00:16:29,583 to create a really amazing result like this one. 26015

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.