1 00:00:00,440 --> 00:00:03,620 A lot of the times your function is not going to return the correct value. 2 00:00:04,010 --> 00:00:07,820 So in this lesson, you're going to learn to debug functions by using breakpoints. 3 00:00:09,970 --> 00:00:13,400 Once again, the code you're going to open isn't going to behave the way that you want it to. 4 00:00:14,170 --> 00:00:17,070 So I'll give you a few seconds to pause and read this description. 5 00:00:24,190 --> 00:00:28,660 And now, based on the description you just read, the starter code should place Gryffindor in first 6 00:00:28,660 --> 00:00:30,910 place, but if we actually run it. 7 00:00:34,630 --> 00:00:35,590 They are in fourth. 8 00:00:36,430 --> 00:00:40,390 Something is wrong and using breakpoints, we can visualize the runtime. 9 00:00:56,910 --> 00:01:02,760 OK, well, there's the first mistake, Gryffindor won by 400 points, but the points margin indicates 10 00:01:02,760 --> 00:01:04,330 that they lost by 400. 11 00:01:05,069 --> 00:01:11,760 We need to reverse the operation and this is a very common type of accidental mistake that you can easily 12 00:01:11,760 --> 00:01:13,860 identify when you visualize the runtime. 13 00:01:16,320 --> 00:01:18,390 So let's launch another debugging session. 14 00:01:28,560 --> 00:01:33,690 And the final up, but it's three, but since Gryffindor is ahead by more than 300 points, they should 15 00:01:33,690 --> 00:01:36,580 be in first place to find out what's going on. 16 00:01:36,600 --> 00:01:38,340 We need to step into the function. 17 00:01:39,410 --> 00:01:43,120 When a breakpoint hits the function call, you can step into it. 18 00:01:46,040 --> 00:01:47,810 So restart the debugging session. 19 00:01:52,910 --> 00:01:56,360 Once the breakpoint hits the function, you can step into its. 20 00:02:05,430 --> 00:02:08,910 And after you step into the function, it evaluates the first condition. 21 00:02:10,979 --> 00:02:12,600 For us, the second one. 22 00:02:14,980 --> 00:02:15,430 True. 23 00:02:19,240 --> 00:02:20,230 And they return three. 24 00:02:25,110 --> 00:02:27,720 It stores the return value in the variable ranking. 25 00:02:30,620 --> 00:02:31,790 Which we then printed. 26 00:02:35,950 --> 00:02:39,460 So we need to rearrange the conditions to go from highest to lowest. 27 00:03:19,260 --> 00:03:21,490 All right, now it returns the correct results. 28 00:03:22,110 --> 00:03:26,880 Now we're going to run some test cases and use break points to visualize each runtime will change. 29 00:03:26,880 --> 00:03:30,000 Gryffindor points to eight fifty rather than clode to five hundred. 30 00:03:30,970 --> 00:03:33,250 That should put Gryffindor in first, let's try it out. 31 00:03:43,380 --> 00:03:44,150 OK, good. 32 00:03:46,540 --> 00:03:50,200 Now we'll do 620 and 500 should put them in second. 33 00:04:06,270 --> 00:04:07,510 OK, great. 34 00:04:08,070 --> 00:04:11,070 We'll do 450 and 500, I should put them in third. 35 00:04:29,970 --> 00:04:30,810 Nice. 36 00:04:36,150 --> 00:04:39,330 Then we'll do a hundred and five hundred and I should put them in last. 37 00:04:59,070 --> 00:05:00,270 And indeed, it does. 38 00:05:04,250 --> 00:05:08,740 Now, if you want to explore the hidden world of Java, you can step into built in functions. 39 00:05:09,470 --> 00:05:10,940 I can step into print line. 40 00:05:18,660 --> 00:05:22,260 And this is the code that runs behind the scenes to print your code. 41 00:05:30,820 --> 00:05:32,650 I can step into that random. 42 00:05:50,460 --> 00:05:57,150 Interesting, it returns the next double that the random number generator produces, OK, makes sense. 43 00:06:05,130 --> 00:06:07,200 I can step into math that, Max. 44 00:06:25,420 --> 00:06:27,650 And this syntax is very interesting. 45 00:06:27,670 --> 00:06:31,780 It's called conditional assignment, and I made you use it in the last exercise. 46 00:06:32,620 --> 00:06:36,280 Basically, it checks if value A is greater than or equal to be. 47 00:06:36,700 --> 00:06:40,870 If it's true, Gever returns the value that follows the questionmark. 48 00:06:41,530 --> 00:06:44,800 Otherwise, Javor returns the value that follows the colon. 49 00:06:44,830 --> 00:06:47,660 B. In this case, the condition is false. 50 00:06:47,800 --> 00:06:49,030 So it's going to return B. 51 00:06:57,900 --> 00:07:01,230 All right, one more thing, notice that Java documents every function. 52 00:07:03,280 --> 00:07:09,490 This function takes two parameters and returns the larger of Perram, A and B, very similar to how 53 00:07:09,490 --> 00:07:11,020 we do things pretty cool. 54 00:07:15,290 --> 00:07:17,690 All right, we used breakpoints to debug a function. 55 00:07:18,910 --> 00:07:24,910 You visualized how a function runs by stepping into it, and if you're curious about built in functions, 56 00:07:24,910 --> 00:07:26,530 you can step into those as well.