1 00:00:01,040 --> 00:00:02,140 So in this video, 2 00:00:02,140 --> 00:00:05,610 we're going to continue implementing the review's resource 3 00:00:05,610 --> 00:00:07,960 and this time by implementing an endpoint 4 00:00:07,960 --> 00:00:12,083 for getting all reviews and also for creating new reviews. 5 00:00:13,760 --> 00:00:16,970 And so at this point, we're basically just reviewing stuff 6 00:00:16,970 --> 00:00:20,040 that we already learned before in previous sections. 7 00:00:20,040 --> 00:00:23,230 And so in this video, I have another challenge for you. 8 00:00:23,230 --> 00:00:26,690 So basically, I want you to implement both these endpoints, 9 00:00:26,690 --> 00:00:28,720 so one endpoint for getting all review 10 00:00:28,720 --> 00:00:32,800 and one endpoint for creating new reviews all on your own. 11 00:00:32,800 --> 00:00:33,633 Okay? 12 00:00:33,633 --> 00:00:35,320 So create the controller file, 13 00:00:35,320 --> 00:00:37,970 then in there create the controller functions, 14 00:00:37,970 --> 00:00:42,390 and then also create the routes in your review routes file. 15 00:00:42,390 --> 00:00:45,550 And then by the end of course, create some new reviews 16 00:00:45,550 --> 00:00:48,040 and also retrieve them from the database 17 00:00:48,040 --> 00:00:50,090 using get all reviews. 18 00:00:50,090 --> 00:00:50,923 All right. 19 00:00:50,923 --> 00:00:54,103 So please pause the video now and get to work. 20 00:00:57,730 --> 00:00:58,563 All right. 21 00:00:58,563 --> 00:01:01,600 And now it's my turn to actually implement this, 22 00:01:01,600 --> 00:01:03,993 and I'm starting with the controller functions. 23 00:01:06,690 --> 00:01:08,370 So right here we create 24 00:01:13,000 --> 00:01:15,130 review Controller dot js 25 00:01:15,130 --> 00:01:19,403 then of course we start by requiring the review. 26 00:01:26,800 --> 00:01:31,253 So one level up, then models, then review model. 27 00:01:36,810 --> 00:01:39,860 So get All Reviews, and we're using 28 00:01:39,860 --> 00:01:42,030 the same name as always. 29 00:01:42,030 --> 00:01:43,430 Right? 30 00:01:43,430 --> 00:01:44,860 Then we already know this is going to be 31 00:01:44,860 --> 00:01:47,800 an async function because we're going to be dealing 32 00:01:47,800 --> 00:01:49,123 with the database here, 33 00:01:53,860 --> 00:01:57,270 and also we need to wrap this entire function 34 00:01:57,270 --> 00:01:59,293 into the catch Async. 35 00:02:02,160 --> 00:02:05,763 So catch Async, I think that's what it's called. 36 00:02:07,360 --> 00:02:08,313 Require. 37 00:02:16,970 --> 00:02:17,803 All right. 38 00:02:24,705 --> 00:02:29,288 And now let's simply fetch all the reviews using await, 39 00:02:30,830 --> 00:02:34,823 and then just a simple find without any filter. 40 00:02:37,520 --> 00:02:42,520 A status of 200 and then send back to normal JSON. 41 00:02:45,890 --> 00:02:47,830 Status as success. 42 00:02:47,830 --> 00:02:49,670 We also define the result property 43 00:02:49,670 --> 00:02:52,583 with the reviews dot length, 44 00:02:55,790 --> 00:02:58,373 and of course, then the data itself. 45 00:03:00,170 --> 00:03:04,053 Give it a save here and now onto the next one. 46 00:03:05,740 --> 00:03:08,790 So create Review. 47 00:03:08,790 --> 00:03:10,100 All right. 48 00:03:10,100 --> 00:03:12,120 And you start to seeing here that 49 00:03:12,120 --> 00:03:15,490 we're building a lot of duplicate code actually. 50 00:03:15,490 --> 00:03:17,690 So all of this here looks 51 00:03:17,690 --> 00:03:20,650 basically exactly the same as it looks for the users, 52 00:03:20,650 --> 00:03:21,810 and for the tours. 53 00:03:21,810 --> 00:03:22,800 Right? 54 00:03:22,800 --> 00:03:24,490 And actually we are going to fix this 55 00:03:24,490 --> 00:03:26,240 a bit later in the section. 56 00:03:26,240 --> 00:03:29,490 But for now, I really just want to make this work. 57 00:03:29,490 --> 00:03:30,323 Okay? 58 00:03:30,323 --> 00:03:33,130 So for now don't worry about writing all this 59 00:03:33,130 --> 00:03:34,793 kinda duplicate looking code. 60 00:03:40,170 --> 00:03:41,090 Okay. 61 00:03:41,090 --> 00:03:43,863 So we call this here new Review, 62 00:03:46,090 --> 00:03:51,090 and then as always we use dot create with all the data 63 00:03:52,040 --> 00:03:54,450 coming in from the body. 64 00:03:54,450 --> 00:03:55,283 Okay? 65 00:03:55,283 --> 00:03:58,220 And so, again if there are any fields on the body 66 00:03:58,220 --> 00:03:59,890 that are not in the review schema 67 00:03:59,890 --> 00:04:02,240 then they will simply be ignored. 68 00:04:02,240 --> 00:04:03,810 And so that's why it's safe to 69 00:04:03,810 --> 00:04:05,690 actually simply do it like this 70 00:04:05,690 --> 00:04:07,750 when creating a new resource. 71 00:04:07,750 --> 00:04:08,950 All right? 72 00:04:08,950 --> 00:04:11,853 Anyway, let's now send it back to the client as always. 73 00:04:13,380 --> 00:04:16,613 So with a status of 201 for created, 74 00:04:26,600 --> 00:04:30,260 and review should be the new 75 00:04:31,820 --> 00:04:33,090 Review. 76 00:04:33,090 --> 00:04:33,923 All right. 77 00:04:35,410 --> 00:04:39,970 Actually without the colon there, semicolon, and so yeah. 78 00:04:39,970 --> 00:04:41,630 These are all controllers. 79 00:04:41,630 --> 00:04:43,843 Now let's move on to the route. 80 00:04:46,240 --> 00:04:47,090 So review 81 00:04:48,750 --> 00:04:50,393 Routes dot js. 82 00:04:51,810 --> 00:04:53,210 And here of course we start 83 00:04:53,210 --> 00:04:55,693 by requiring our controller, 84 00:05:06,110 --> 00:05:08,220 and to the controllers and 85 00:05:08,220 --> 00:05:10,053 review Controller dot js. 86 00:05:12,900 --> 00:05:15,633 Next up, we need to create our router. 87 00:05:17,970 --> 00:05:21,800 So express, and so of course we also need to 88 00:05:21,800 --> 00:05:23,590 import express here. 89 00:05:23,590 --> 00:05:25,973 So let's do that before doing anything else. 90 00:05:32,510 --> 00:05:33,913 Express. 91 00:05:39,360 --> 00:05:42,523 So dot Router, and I think this is how it works. 92 00:05:44,350 --> 00:05:45,540 And now router 93 00:05:47,080 --> 00:05:48,770 and define our route 94 00:05:50,180 --> 00:05:54,430 and this again is basically route of the reviews. 95 00:05:54,430 --> 00:05:55,263 Okay. 96 00:05:55,263 --> 00:05:57,090 Because remember how in the next step 97 00:05:57,090 --> 00:05:58,600 we are actually going to mount 98 00:05:58,600 --> 00:06:01,700 this router on API slash reviews. 99 00:06:01,700 --> 00:06:02,533 Okay? 100 00:06:02,533 --> 00:06:05,920 So just like we did with the tours and the users. 101 00:06:05,920 --> 00:06:09,260 And actually let's do that before we do anything else. 102 00:06:09,260 --> 00:06:10,093 Okay? 103 00:06:10,093 --> 00:06:12,210 So just to take that confusion 104 00:06:12,210 --> 00:06:13,950 that you might have away. 105 00:06:13,950 --> 00:06:16,573 So, let's export the router from here. 106 00:06:21,516 --> 00:06:22,349 Okay? 107 00:06:22,349 --> 00:06:24,500 And so now we can move over 108 00:06:24,500 --> 00:06:26,063 to app dot js. 109 00:06:27,600 --> 00:06:30,290 And then of course import our router here. 110 00:06:37,571 --> 00:06:38,571 And require, 111 00:06:42,320 --> 00:06:44,210 review routes. 112 00:06:44,210 --> 00:06:45,170 Okay? 113 00:06:45,170 --> 00:06:47,790 And so now we come down here 114 00:06:47,790 --> 00:06:51,600 and mount this router on a new path. 115 00:06:51,600 --> 00:06:53,910 And that path is going to be as I said 116 00:06:53,910 --> 00:06:56,400 API slash V1 slash 117 00:06:57,790 --> 00:06:58,623 reviews. 118 00:06:59,740 --> 00:07:00,573 Okay. 119 00:07:00,573 --> 00:07:02,580 And so again this router here 120 00:07:02,580 --> 00:07:05,670 that we're specifying now is basically a middleware 121 00:07:05,670 --> 00:07:08,420 that we mount upon this path. 122 00:07:08,420 --> 00:07:09,253 Okay? 123 00:07:09,253 --> 00:07:10,770 So whenever there is a request 124 00:07:10,770 --> 00:07:13,650 with a url that starts like this 125 00:07:13,650 --> 00:07:15,430 then this middleware function here 126 00:07:15,430 --> 00:07:16,890 will basically be called. 127 00:07:16,890 --> 00:07:18,640 And so that is then our router 128 00:07:18,640 --> 00:07:20,910 and in there just the slash route, 129 00:07:20,910 --> 00:07:23,230 so just the root basically will 130 00:07:23,230 --> 00:07:26,510 then be this API V1 reviews. 131 00:07:26,510 --> 00:07:27,430 Okay? 132 00:07:27,430 --> 00:07:31,200 So just like we did it before we the other two resources. 133 00:07:31,200 --> 00:07:34,020 So tour Model, that's not where we were working. 134 00:07:34,020 --> 00:07:36,223 We were working in the review Routes. 135 00:07:37,190 --> 00:07:38,360 Okay. 136 00:07:38,360 --> 00:07:39,840 So we specified a route. 137 00:07:39,840 --> 00:07:42,240 Let's now specify the method 138 00:07:42,240 --> 00:07:44,283 for which we specify our function. 139 00:07:45,370 --> 00:07:48,240 So we have get, and for that we used 140 00:07:49,290 --> 00:07:50,950 or we actually rewrote 141 00:07:50,950 --> 00:07:55,440 review Controller dot get All Reviews 142 00:07:55,440 --> 00:07:56,273 Right? 143 00:07:56,273 --> 00:07:59,480 And then we also have post for 144 00:08:02,180 --> 00:08:04,370 create Review. 145 00:08:04,370 --> 00:08:05,203 Okay? 146 00:08:05,203 --> 00:08:06,420 Give it a save. 147 00:08:06,420 --> 00:08:08,940 And actually we only want authenticated users 148 00:08:08,940 --> 00:08:11,010 to be able to post reviews. 149 00:08:11,010 --> 00:08:14,960 And also only users that are actually regular users. 150 00:08:14,960 --> 00:08:18,210 So not administrators and also not tour guides. 151 00:08:18,210 --> 00:08:19,043 Okay? 152 00:08:19,043 --> 00:08:21,060 So how can we implement that? 153 00:08:21,060 --> 00:08:23,820 Let's remember our authentication section. 154 00:08:23,820 --> 00:08:26,913 So we start by requiring our auth Controller. 155 00:08:36,320 --> 00:08:39,860 So again, controllers and auth Controller. 156 00:08:39,860 --> 00:08:41,420 And now all we need to do 157 00:08:41,420 --> 00:08:43,450 is to actually use the middleware functions 158 00:08:43,450 --> 00:08:45,140 that we specified in there. 159 00:08:45,140 --> 00:08:46,280 Remember. 160 00:08:46,280 --> 00:08:50,640 So first, we use the protect middleware, 161 00:08:50,640 --> 00:08:51,950 so auth Controller 162 00:08:53,150 --> 00:08:54,400 dot protect 163 00:08:54,400 --> 00:08:57,260 and this will make it so that we protect this route 164 00:08:57,260 --> 00:09:00,520 to only be accessed by users who are authenticated. 165 00:09:00,520 --> 00:09:01,353 Right? 166 00:09:01,353 --> 00:09:02,697 And then in the next step we say 167 00:09:02,697 --> 00:09:05,170 that we want to restrict this route 168 00:09:06,020 --> 00:09:08,830 so we use our restrict To middleware 169 00:09:08,830 --> 00:09:12,273 to only users with the role of user. 170 00:09:14,100 --> 00:09:14,980 All right? 171 00:09:14,980 --> 00:09:18,070 So again, we did this here before a couple of times. 172 00:09:18,070 --> 00:09:21,680 And so, not really anything new at this point. 173 00:09:21,680 --> 00:09:22,513 Okay. 174 00:09:22,513 --> 00:09:24,490 So I think we followed all the steps. 175 00:09:24,490 --> 00:09:27,650 So first off, we have a model which will allow us 176 00:09:27,650 --> 00:09:29,420 to create new documents. 177 00:09:29,420 --> 00:09:31,430 Then we have our Controller functions 178 00:09:31,430 --> 00:09:34,550 defined in our Controller to get all reviews 179 00:09:34,550 --> 00:09:36,460 and to create reviews. 180 00:09:36,460 --> 00:09:38,820 Then, we used these Controller functions 181 00:09:38,820 --> 00:09:39,910 or handler functions 182 00:09:39,910 --> 00:09:41,370 as you can also call them, 183 00:09:41,370 --> 00:09:43,560 to create some new routes. 184 00:09:43,560 --> 00:09:44,393 Okay? 185 00:09:44,393 --> 00:09:46,500 And so we created a route for getting reviews 186 00:09:46,500 --> 00:09:48,000 and for posting reviews. 187 00:09:48,000 --> 00:09:49,690 And just like before we did this 188 00:09:49,690 --> 00:09:52,330 basically in a mini sub-application 189 00:09:52,330 --> 00:09:54,130 which is just for reviews. 190 00:09:54,130 --> 00:09:56,630 And so that's why we created our new router 191 00:09:56,630 --> 00:09:59,620 which then we imported into our main application 192 00:09:59,620 --> 00:10:02,660 and mounted it on this url where we want 193 00:10:02,660 --> 00:10:05,520 to access everything related to reviews. 194 00:10:05,520 --> 00:10:06,600 All right? 195 00:10:06,600 --> 00:10:09,793 So, let's now actually go ahead and test this. 196 00:10:12,910 --> 00:10:14,560 So I'm gonna go ahead, copy this, 197 00:10:15,860 --> 00:10:18,680 and create a new tab here 198 00:10:18,680 --> 00:10:19,620 and so here 199 00:10:20,720 --> 00:10:22,040 it's reviews 200 00:10:22,040 --> 00:10:24,113 and of course post. 201 00:10:25,580 --> 00:10:26,970 All right. 202 00:10:26,970 --> 00:10:29,080 So, what do we actually need to specify 203 00:10:29,080 --> 00:10:30,963 in order to post a new review? 204 00:10:34,090 --> 00:10:36,340 So we need the review itself. 205 00:10:36,340 --> 00:10:37,173 Remember. 206 00:10:40,550 --> 00:10:42,103 So let's say "amazing tour" 207 00:10:43,260 --> 00:10:44,770 then the rating 208 00:10:44,770 --> 00:10:46,470 and I'm gonna give it five here, 209 00:10:46,470 --> 00:10:48,883 and then the tour and the user ID. 210 00:10:53,890 --> 00:10:54,723 Okay? 211 00:10:54,723 --> 00:10:58,970 And so now we need to get the ID of one of the tours. 212 00:10:58,970 --> 00:10:59,803 Okay? 213 00:10:59,803 --> 00:11:02,670 And so let's use the first real tour here 214 00:11:02,670 --> 00:11:06,583 let's say, so let's use this sea explorer. 215 00:11:07,480 --> 00:11:08,313 All right? 216 00:11:09,380 --> 00:11:10,213 So, 217 00:11:12,500 --> 00:11:14,660 the ID of the sea explorer 218 00:11:14,660 --> 00:11:16,575 and now we of course also need 219 00:11:16,575 --> 00:11:20,080 the ID of the user posting the review. 220 00:11:20,080 --> 00:11:21,380 And we can get that here from 221 00:11:21,380 --> 00:11:23,130 get all users. 222 00:11:23,130 --> 00:11:25,640 And so actually we only have one user 223 00:11:25,640 --> 00:11:27,470 which is a regular user. 224 00:11:27,470 --> 00:11:31,303 So this Jonas here and so let's get this ID. 225 00:11:32,190 --> 00:11:33,370 All right? 226 00:11:33,370 --> 00:11:35,020 Now keep in mind that this user 227 00:11:35,020 --> 00:11:36,730 actually needs to be logged in. 228 00:11:36,730 --> 00:11:37,563 Okay? 229 00:11:37,563 --> 00:11:39,150 And so a bit later we will then actually 230 00:11:39,150 --> 00:11:42,180 automatically get the user ID from the user 231 00:11:42,180 --> 00:11:43,670 that's already logged in. 232 00:11:43,670 --> 00:11:46,980 Remember we can do that because the protect middleware 233 00:11:46,980 --> 00:11:49,790 will put the user on the request object. 234 00:11:49,790 --> 00:11:50,930 Remember that? 235 00:11:50,930 --> 00:11:53,640 But for now, I wanted to keep it simple here, 236 00:11:53,640 --> 00:11:55,220 and so with the current implementation 237 00:11:55,220 --> 00:11:58,800 we actually need to provide the user's ID as well. 238 00:11:58,800 --> 00:11:59,633 Okay? 239 00:11:59,633 --> 00:12:02,390 But still we need to log in as a regular user 240 00:12:02,390 --> 00:12:05,130 because we protected this route. 241 00:12:05,130 --> 00:12:06,490 Remember that? 242 00:12:06,490 --> 00:12:09,713 So let's just close a couple of these. 243 00:12:14,207 --> 00:12:15,040 Okay? 244 00:12:17,368 --> 00:12:18,701 And log in here. 245 00:12:19,630 --> 00:12:24,080 And we do that as, so what hello dot Jonas at IO 246 00:12:26,500 --> 00:12:27,430 so hello. 247 00:12:27,430 --> 00:12:29,850 And his password is probably and I hope 248 00:12:29,850 --> 00:12:31,053 it is still the same. 249 00:12:32,530 --> 00:12:36,430 And actually it's not so let's try a new password 250 00:12:36,430 --> 00:12:40,223 cause I remember I used that one when we changed passwords. 251 00:12:44,730 --> 00:12:47,240 Still doesn't work, and so let's actually 252 00:12:47,240 --> 00:12:48,530 create a new user. 253 00:12:48,530 --> 00:12:49,363 Okay? 254 00:12:49,363 --> 00:12:52,850 Of course we could do the reset password at this point, 255 00:12:52,850 --> 00:12:54,320 but that's a bit too much work 256 00:12:54,320 --> 00:12:56,760 and so I'm simply going to create a new user 257 00:12:56,760 --> 00:12:59,570 so that's easier just for testing it now. 258 00:12:59,570 --> 00:13:00,403 Okay? 259 00:13:02,330 --> 00:13:05,110 So let's use test at Jonas dot IO 260 00:13:05,110 --> 00:13:07,603 and the name here is gonna be test user. 261 00:13:10,810 --> 00:13:11,643 All right. 262 00:13:13,150 --> 00:13:16,790 Oh, and we already have that email address in our database 263 00:13:16,790 --> 00:13:17,740 and that's strange. 264 00:13:19,460 --> 00:13:20,413 We have user. 265 00:13:21,350 --> 00:13:24,190 Maybe it didn't, we didn't update this properly. 266 00:13:24,190 --> 00:13:27,130 Oh, but maybe it's a deleted user. 267 00:13:27,130 --> 00:13:29,380 So a user that's no longer active 268 00:13:29,380 --> 00:13:31,620 and is therefore not showing up here. 269 00:13:31,620 --> 00:13:34,750 So let's just take a look at that in compass. 270 00:13:34,750 --> 00:13:36,820 And of course when you're in development mode, 271 00:13:36,820 --> 00:13:40,730 you're gonna run into these kind of issues all the time. 272 00:13:40,730 --> 00:13:43,660 So here, test Jonas, and as I was saying, 273 00:13:43,660 --> 00:13:46,110 it's actually one of these deleted users. 274 00:13:46,110 --> 00:13:48,640 So active set to false. 275 00:13:48,640 --> 00:13:50,423 So let's try that again. 276 00:13:54,070 --> 00:13:56,663 So test user here simply as well. 277 00:13:57,710 --> 00:14:01,330 So send it now and now we are logged in. 278 00:14:01,330 --> 00:14:04,800 And so now I'm copying the ID from this new user 279 00:14:04,800 --> 00:14:06,493 to create this new review. 280 00:14:08,470 --> 00:14:09,570 All right? 281 00:14:09,570 --> 00:14:11,290 Let's send it now, 282 00:14:11,290 --> 00:14:14,580 and of course we get the you are not logged in error 283 00:14:14,580 --> 00:14:16,330 because we actually didn't provide 284 00:14:16,330 --> 00:14:18,590 our JSON web token. 285 00:14:18,590 --> 00:14:21,140 So we need to come to authorization 286 00:14:21,140 --> 00:14:22,920 then the bearer token, 287 00:14:22,920 --> 00:14:24,320 and then of course this one. 288 00:14:25,860 --> 00:14:27,863 So, if we try this now again, 289 00:14:29,690 --> 00:14:31,480 then here we go. 290 00:14:31,480 --> 00:14:32,313 Okay. 291 00:14:32,313 --> 00:14:34,653 Let's create another one for another tour, 292 00:14:35,930 --> 00:14:37,313 this time for, 293 00:14:39,370 --> 00:14:40,270 for the next one, 294 00:14:40,270 --> 00:14:42,560 so for Forrest Hiker. 295 00:14:42,560 --> 00:14:44,253 So copy the ID here as well. 296 00:14:46,490 --> 00:14:47,323 Yeah. 297 00:14:47,323 --> 00:14:50,693 Here the user is gonna be the same, but another tour. 298 00:14:51,590 --> 00:14:54,750 Let's give it a four stars. 299 00:14:54,750 --> 00:14:58,147 And let's just say "loved it." 300 00:14:59,490 --> 00:15:00,630 Something very simple 301 00:15:01,979 --> 00:15:02,812 and okay. 302 00:15:04,120 --> 00:15:05,570 Give this a save, 303 00:15:05,570 --> 00:15:07,260 and I'm gonna create 304 00:15:07,260 --> 00:15:09,290 a new folder here for the reviews 305 00:15:14,310 --> 00:15:15,143 and of course 306 00:15:16,690 --> 00:15:18,120 something went wrong here. 307 00:15:18,120 --> 00:15:19,920 So where is that folder? 308 00:15:19,920 --> 00:15:21,140 Mm. 309 00:15:21,140 --> 00:15:24,423 It's nowhere really so let's just create it here. 310 00:15:36,700 --> 00:15:39,323 And we can actually change the name up here as well. 311 00:15:40,520 --> 00:15:41,353 So create 312 00:15:43,790 --> 00:15:44,983 new review. 313 00:15:50,440 --> 00:15:51,400 Okay. 314 00:15:51,400 --> 00:15:54,543 And now we also want to get all reviews. 315 00:15:58,300 --> 00:16:00,503 So we no longer need these two. 316 00:16:05,190 --> 00:16:07,720 Okay and this one is really a GET, 317 00:16:07,720 --> 00:16:10,723 and let's also save it in Reviews. 318 00:16:17,870 --> 00:16:19,220 Get all the reviews. 319 00:16:19,220 --> 00:16:22,210 And so that should be enough to get us started 320 00:16:22,210 --> 00:16:24,660 and really see all our reviews. 321 00:16:24,660 --> 00:16:26,860 Okay, and here we go. 322 00:16:26,860 --> 00:16:29,350 Let's take a look at compass, 323 00:16:29,350 --> 00:16:31,810 and to see the reviews here we need to go ahead 324 00:16:31,810 --> 00:16:33,870 and reload the entire database, 325 00:16:33,870 --> 00:16:37,130 but now when we come to Reviews here we indeed see 326 00:16:37,130 --> 00:16:40,593 our two reviews that have been created as well. 327 00:16:42,030 --> 00:16:43,150 Okay. 328 00:16:43,150 --> 00:16:45,040 Now how do we make it so that 329 00:16:45,040 --> 00:16:48,000 we actually see the user and the tour data here 330 00:16:48,000 --> 00:16:50,480 instead of simply the IDs? 331 00:16:50,480 --> 00:16:54,190 Well, of course we need to again use populate. 332 00:16:54,190 --> 00:16:55,050 Right? 333 00:16:55,050 --> 00:16:57,070 And so that's exactly what we're going to do 334 00:16:57,070 --> 00:16:58,253 in the next video.