Hello and welcome back. In this session, we are going to study about polymorphism and virtual functions in C++. Here is a quick recap of what we studied in the last lecture. We studied about objects of base and derived classes and also pointers and references to such objects. And we also looked at some special kinds of inheritance like multiple inheritance and diamond inheritance. In this lecture, we are going to start by recapitulating one of the member functions that we have seen earlier in the example of the bank account classes that we have studied in the earlier lectures. This member function is the print info function. We will look at it again and we will use that to motivate polymorphism in C++ programming. And we will also study about virtual destructors and abstract classes which are particularly relevant when you are talking about polymorphism. So, well what is polymorphism? The dictionary meaning of polymorphism is the condition of occurring in several different forms or the ability to assume different forms or shapes. And in computer science, we pretty much use it in the same sense and you see this word polymorphism has these two parts. The poly part means many or much and the morph part means form or shape. So, even in computer science, we are going to refer to polymorphism when a particular object or a particular entity can assume different forms or shapes depending on the context in which it is used. We will see examples of this very soon in the next few slides. In fact, we have already seen some form of this in some of our previous lectures. If you recall, we had statements like this in programs that we had seen in previous lectures. And in an assignment statement like this, we had studied in an earlier lecture that we could take an object of a derived class and assign it to an object of a base class. Now, recall that an object of the derived class actually has everything of the base class within it and it may have some additional data members or member functions. And an object of the derived class like D here can therefore, also be viewed as an object of the base class if I want to use it like an object of the base class because it has everything that an object of the base class has. So, if I want to use an object of the derived class as an object of the base class like in this assignment, I can use it I can use D like an object of the base class as well. So, the object D can therefore, be viewed as having multiple forms either an object of the derived class or an object of the base class depending on the context in which I want to use it. In this particular assignment statement, I am going to treat the object D as an object of the base class and only access data members of it which are present in the base class. We have already seen this earlier in a previous lecture. I just wanted to highlight that we have already seen such instances when the same object is treated as either belonging as either an object of a derived class or as an object of a base class depending on the context in which I am using it. Now, let us also look at the print info function from the savings and current bank accounts that we had seen in an earlier lecture. So, here was the base bank account class which had two data members ID and balance and let us say this was the method print info it is a public method in the base class and this just prints out base followed by a new line. Here is the derived class savings which has two additional data members called age and ATM and this redefines print info such that it now prints out savings followed by the new line. And here is another class which is derived from the base class this is the class current which has its own additional data members amount and overdraft and it redefines print info in its own way and this method prints out current followed by a new line. So, if I had a main program like this in this note that I have instantiated an object of the base class an object of the savings class and an object of the current class. I also have a pointer to the base class and in this assignment statement I am taking the address of S which is an object of the savings class and I am assigning it to BPTR which is actually a pointer to the base class and then I am invoking the method print info with respect to BPTR. So, BPTR arrow print info and here I am doing the same thing again, but starting from the address of C which is an object of the current class. So, here the address of C which is an object of the current class is going to be assigned to BPTR which is a pointer to the base class and then I am going to invoke BPTR arrow print info and finally it returns 0. So, the point to note here is that in this assignment statement I have taken an object of a derived class taken its address and then assigned it to BPTR whose type is a pointer to the base class, but because an object of the derived class can also be viewed as an object of the base class therefore, this assignment is fine. And now when I invoke BPTR arrow print info, I am actually invoking the print info function of the base class because BPTR is a pointer to the base class. So, therefore, base will be printed out over here. Similarly, over here since C is an object of the derived class current therefore, it can also be treated like an object of the base class. And therefore, when I take the address of C and assign it to BPTR whose type is a pointer to the base class this assignment is fine. I am effectively treating C as an object of the base class which I can do because it is derived from the base class and therefore, it has everything that the base class has. And then when I invoke BPTR arrow print info because BPTR is a pointer to the base class therefore, print info of the base class is going to get invoked and base will get printed out over here. Now the question is here when I said BPTR is assigned the address of S, I probably wanted BPTR to behave like S. So, when I invoke BPTR arrow print info, I probably wanted this to behave like the print info method of the savings class.  And so, this print info presumably has the intent that we wanted print info from the savings class to be printed, but of course, that is not going to happen in the C++ program. So, the question is how do I print info from the savings and the current classes at these two statements by invoking BPTR print info over here and again by invoking BPTR print info over here. So, you might ask why do I want to do this? Well, when I am writing a program maybe I do not know a priory whether BPTR is going to be assigned the address of S or whether BPTR is going to be assigned the address of C. Maybe there is an if condition here and if that condition is satisfied then I am going to assign BPTR to the address of S, otherwise I am going to assign BPTR to the address of C, but regardless of which assignment happens I want to print info, I want to call BPTR arrow print info. So, in this particular case I do not know before the program executes whether the condition in that if statement is going to be satisfied and therefore whether BPTR will get the address of S or whether BPTR will get the address of C, but what I do want is that if BPTR is assigned the address of S then the print info of the savings class should be invoked and if BPTR is assigned the address of C then the print info of the current class should be invoked. So, in this straight line program we have shown a very simple example, but in a real program whether BPTR gets assigned to the address of S, whether the address of S gets assigned to BPTR or whether the address of C gets assigned to BPTR might depend on some condition and we may not be able to know this a priori. So, whenever we are making the call of BPTR arrow print info there is no way to a priori say whether I wanted to call print info of the savings class or whether I wanted to call print info of the current class and in such cases this question is very relevant that I want to call print info of the class depending on whether the address of S got assigned to BPTR or the address of C got assigned to BPTR. If the address of S got assigned to BPTR I want to call print info of the savings class otherwise I want to call print info of the current class. So, the question is how do we do this in C plus plus well this is what we want we want BPTR arrow print info to behave as print info in the savings class if this assignment was made and we wanted to behave as print info in the current class after this assignment is made and as I said if there is an if condition which is guarding whether this assignment is made or this assignment is made a priori just by looking at the program we may not be able to determine whether BPTR will take on the address of S or BPTR will take on the address of C. So, a priori it is not possible to determine whether BPTR print info should behave like print info in savings class or it should behave like print info in current class this is something which has to be determined at runtime while the program is running. If this assignment is done then I want BPTR print info to behave like print info in the savings class otherwise if this assignment is done I want BPTR print info to behave like print info in the current class. So, how do we do this in C plus plus programming C plus plus actually provides a very elegant way to do this and this is called virtual functions and we are going to study a lot about this in the next few slides and virtual functions essentially implement polymorphism in function calls as you can see here I want the same function called to behave either like print info of the savings class or like print info of the current class depending on the actual context when I am running whether BPTR was assigned the address of S or whether it was assigned the address of C. So, I really want this function to behave in one of two different ways which is going to be determined at runtime. So, this is nothing but an example of polymorphism and the way we are going to implement this polymorphism in C plus plus is through virtual functions. So, this is how we use virtual functions here I have the same class base with the same data members, but instead of saying that I am defining print info to do something here printing out base followed by new line I say that well I wanted to do this, but I am going to add this keyword virtual before the actual function definition and what this does is this actually tells the compiler that well do not really use this function if the context in which print info is getting called dictates that some other print info should be used and where is that other print info going to come from from the derived classes. So, here the savings class is derived from the base class and it is defining what print info should behave like and here is the current class again derived from the base class and this is deriving what print info should be doing and this virtual basically says that if you have a pointer to an object of the base class first figure out whether this pointer was really pointing to an object of the savings class or whether it was pointing to an object of the current class note that an object of the savings class can also be viewed as an object of the base class and similarly for an object of the current class. So, this virtual specification here basically says that determine what print info to call at runtime and not at compile time. So, at runtime let us figure out what is a pointed to the base class pointing to if it is pointing to an object of the base class then we will call this, but if it is actually pointing to an object of the savings class like we saw in an earlier example then it should actually call this and if it is actually pointing to an object of the current class then it should actually call this. So, here is the main function which is actually the same as the main function that we saw in the previous slide. However, here since in the base class I have declared print info to be virtual when the compiler compiles this main function and when it encounters BPTR arrow print info over here it actually does not go and try to put a call to the print info member function of the base class although BPTR is a pointed to the base class instead what it does is it says that at runtime we will determine what BPTR is really pointing to, because I have specified print info to be virtual and then depending on what it is really pointing to we will call print info. So, if it is really pointing to an object of the base class we will call this function otherwise if it is pointing to an object of the savings class then we will call this function otherwise if it is pointing to an object of the current class we will call this function. So, that is what is going to happen at these two statements. So, the specification virtual in the class definition instructs the compiler that when it is compiling this program, it should not compile these two statements directly to calls to the print info member function of the base class. Instead at run time, it should determine what VPTR is pointing to and accordingly call the print info member function of the appropriate class which could be the base class or the derived class. So, here we are assigning the address of a savings object to the base pointer which is fine we have seen earlier, but now because VPTR is really pointing to an object of the savings class and because print info is declared as virtual in the base class definition. So, therefore, this print info will be the print info definition from the savings class and you will see the output savings over here coming from this statement. Here the same pointer variable VPTR is now assigned the value of the address of C where C is an object of the current class. So, when we say VPTR arrow print info over here because print info is declared virtual in the base class definition. So, the print info of the base class is not going to be called here instead at run time it will be determined what VPTR is pointing to VPTR is in this case pointing to an object of the class current and therefore, print info as defined in the class current will be called and therefore, you will see on the output current being printed here. So, you see that this print info VPTR arrow print info behaves in one way here and behaves in the other way here and this is basically saying that this function print info is polymorphic it can take one of two different forms depending on what VPTR is really pointing to and this is going to be determined at run time when the program is executing and how do we specify this when we are writing the program by saying that the print info function in the base class is virtual. Now, here we have the same program but now we have augmented it with another method another function here in the base class but note that this method is not a virtual function it is our usual standard function or method and it prints out base call followed by a new line and let us say in the savings class I have redefined it and in the current class I have redefined it as well and now here we have the same main program as we saw earlier except that now I have VPTR arrow call at these two locations. Now, this is very interesting because VPTR is a pointer to the base class and in this assignment statement the address of an object of the derived class which is going to be viewed as an object of the base class is assigned to this pointer. And then when I say VPTR arrow call remember VPTR is a pointer of the base class. So, in the base class I will have to go and see what call is and call has not been declared as virtual. Therefore, this VPTR arrow call should do exactly what the method call in the base class asks it to do which means it should just print out base call. However, VPTR arrow print info it is the same VPTR arrow print info here because print info in the base class has been declared as virtual. Therefore, here it is going to invoke the print info function from the object that it is really pointing to in this case it is an object of class savings and therefore, savings gets printed here. And now once again VPTR is assigned the address of C. So, this is once again fine because C can also be viewed as an object of the base class. And when we again do VPTR arrow call VPTR is appointed to the base class. So, VPTR arrow call means we have to go to the base class see what the method call is and it is not a virtual method. So, therefore, whatever this method call in the base class is saying we have to do that. So, it is going to print base call here, but in the very next statement when I use the same VPTR to say VPTR arrow print info in the base class because print info is declared virtual. Therefore, I have to figure out at this point what is VPTR really pointing to it is pointing to an object of the class current and I have to use the print info function from the class current and so current is going to be printed out over here. So, you see the different things that you can do when you declare a particular method is not virtual and when you declare another method is virtual. Everything which is not declared as virtual will be executed as defined in the base class because I am using a pointer to the base object here, but everything which is declared as virtual at runtime it will be determined what is it really pointing to and the definition of print info from that class is going to be picked up. Here is a different variant of polymorphism, here is the base class and here is the same virtual method and here is another method print and note that within print I have invoked print info and here is the derived class savings which has a definition of print info and here is the derived class current which has a definition of print info. Now, this method which is calling print info and print info being declared as virtual, so what method is it really going to call here depends on what object context in which I am calling this method print. So, to illustrate this let us look at this program, here I have three different objects of class base savings and current, here I am calling b dot print, so b is an object of class base. So, it is going to come here and b is an object of class base, so it must directly call the print method and in the print method I see an invocation to print info and print info is declared as virtual. So, I must go back and ask well what is the context in which this call is being made, the context in which this call is being made is in the context of an object of class base. So, therefore I should use the definition of print info as in the class base and this should get printed out. However, when I call s dot print, s being an object of class savings is also an object of class base and so the same print method of the base class is going to be invoked here and within the body of the print method there is an invocation of print info. Print info in the base class is declared as a virtual function and what does this mean? It means that at run time we must determine what is the context in which this print info call is being made, this is being called in the context of s and so we must not pick up this definition of print info, we must pick up the definition of print info as in the class savings and savings will get printed here. And here is c dot print once again c being an object of the class current is also an object of the class base. So, c dot print will cause an invocation of this method in the class base. In the body of that method print info is going to get called, but print info is declared as virtual. So, therefore we have to ask what is the context in which this method print info is being called, the context is an object of class current and therefore because print info is declared as virtual we must call print info as defined in the class current and therefore current will get printed here. So, you see that the function print behaves in three different ways depending on whether I am calling it in the context of a base object or a savings object or a current object although the function print is itself not a virtual function. And why does this happen because the function print in its body calls another method which is actually declared to be virtual. And so when I am trying to execute this method here I have to go and find out what is the context in which this call is being made and have to use the definition of print info from that context. Now, having seen a little bit about polymorphism and virtual functions let us consider an interesting situation as depicted in this slide. So, here I have a class A where everything is public and class B is derived from class A which is indicated by this arrow going from class B to class A. Inside class B I have a private data member z whose type is an integer pointer and this is the constructor for the class B and inside the constructor I allocate memory for a new integer and I store the address of the newly allocated integer in this private data member z. Here is the main function a p t r is a pointer of class A, a p t r is a pointer to an object of class A and in this statement I am allocating a new object of class B and assigning it to a p t r. But since an object of class B can also be viewed as an object of class A, so the address of the newly allocated object of class B can also be viewed as an address of an object of class A and therefore, this assignment is fine. Now, the question is somewhere in this main program suppose I say delete a p t r. So, because a p t r is a pointer to an object of class A, so delete a p t r will go and invoke the destructor of class A. However, I am really trying to deallocate the space allocated for this object of class B, because a p t r was really pointing to an object of class B and this object of class B had already dynamically allocated some memory for an integer and store the address of that in z. But when the destructor of A is called if I execute a statement delete a p t r when the destructor of A is called there is no way from the destructor of A I can access this private data member of class B and I can free up this space allocated for the new integer. So, the problem that we have is how do we delete resources or memory which is allocated inside the derived class, but using a pointer to the base class just like we have here. So, a p t r is a pointer to the base class I have assigned to a p t r the address of a newly allocated object of the derived class and I want to use delete a p t r, but I also want to free up the space that was allocated in an object of the derived class which is really what a p t r was pointing to when I have delete a p t r over here. So, here is a more fleshed out version of that example. So, here is the class A this is the constructor and let us say we just print A here followed by a new line here is the destructor let us say I just print tilde A followed by the new line. Here is the class B which is derived from the class A has the same private data member z as we saw earlier. Here is the constructor for B which allocates memory for a new integer and then prints out B followed by a new line. Here is the destructor for B which prints out tilde B followed by the new line and if this destructor of B gets called then it is going to free up the space that was allocated here in the constructor for that one integer. But the question is are we going to be able to call this destructor from the main program if our main program is written like this what is this main program doing a p t r is a pointer to an object of the class A I am assigning to a p t r the address returned by new B this is going to give me the address of a freshly allocated object of class B in the heap and then I have delete a p t r the question is when I call delete a p t r a p t r being a pointer to an object of class A it is going to try to invoke the destructor of the class A and in that process I will not be invoking the destructor of class B although a p t r was really pointing to an object of class B and therefore if I just invoke the destructor of class A and not the destructor of class B the memory that was allocated for z is not going to be freed up. So, let us see how this works. So, this is the declaration of a p t r and let us say I am I execute this statement because I am allocating an object of class B. So, the constructor of B is going to get called but note that B is an object of a derived class. So, when I call the constructor of B the default constructor of A is going to get called here and I am going to see A on the output and then I am going to come and execute the rest of the body of the constructor of B. So, a new integer will be allocated space for a new integer will be allocated its address will be copied to this private data member z and B will get printed out.  So, note that the destructor of class B never even got called and whatever memory was allocated for the integer z let us say an integer takes 4 bytes of memory and these are the addresses of those 4 consecutive bytes in memory. Whatever space was allocated for this does not get freed up the memory for z is not freed and therefore, our problem that we wanted to free up this memory when we call delete a p t r because a p t r was really pointing to an object of class B and in the constructor for B we had allocated object for this integer. So, really when we call delete a p t r we wanted to free up that integer we do not want this allocated object of class B anymore. So, we wanted to free up the space allocated for that integer, but that does not happen if I use a normal destructor for the class A like we have seen all throughout. However, if I use what is called a virtual destructor then just like for virtual methods when I go to the base class and I am trying to invoke a method and I see that the method is declared as virtual then I must first find out what is the context in which that method is being called and then I must call the method from the appropriate derived class just like that we could declare the destructor of A also as virtual and in this case if the context in which the delete statement was being executed was the context of an object of class B then the destructor of class B is going to get called. So, therefore, the destructor of class A can be declared as virtual and now I have the same program and let us see what happens now. So, here is the declaration here is once again allocating a new object of class B which calls the constructor of B which in turn calls the constructor of A that prints out A over here then the rest of the body of B is executed which means space for a new integer is allocated and that address is stored in the private data member Z of the class B and B is printed out over here and after that I am going to execute delete APTR and when I do that APTR being a pointer to an object of class A I am going to come here and see what the destructor of class A does and lo and behold this destructor is specified as virtual. So, therefore, I have to find out the context in which I am calling this destructor the context in which I am trying to do this delete APTR which means basically what was APTR really pointing to it was actually pointing to an object of class B. Therefore, the destructor of B is now going to get called and if you remember from an earlier lecture when we are calling a destructor of a derived class first the statements in the destructor of the derived class are going to get called then the statements in the destructor of the base class are going to get called. So, that is exactly what is going to happen here. So, when I call the destructor of B first the statements in its body are going to get executed. So, you will print tilde B you will then actually go ahead and free up the memory that was allocated for the integer over here and after that you are going to call the destructor for the class A this is exactly what we have studied earlier that when we call the destructor of a derived class first the statements in the body of the destructor of the derived class are executed then the statements in the body of the base class are executed. So, now this is going to get executed and tilde A is going to get printed and now we are fine we have actually freed up the memory that was allocated for a new integer in the constructor for B even when I said delete APTR and how did we do this by using virtual destructors just like we used virtual methods earlier. When I say delete APTR and the destructor of the base class is declared as virtual I must first find out what is APTR really pointing to and call the destructor of the appropriate derived class. Now, there is one more important concept that we are going to study in the context of polymorphism and virtual functions and this is what is called an abstract class. So, at a very high level an abstract class is something which cannot be instantiated directly and we can only instantiate objects of classes derived from this abstract class. So, it is only meant to be used as the base class of some derived classes and we can instantiate objects of this derived classes and how do we implement an abstract class we implemented by writing a class definition in which we have what are called pure virtual functions we will see in a minute what are pure virtual functions and these pure virtual functions should be overridden by member function definitions of the derived classes. Remember that an abstract class is intended to be used only for deriving other derived classes and so those derived classes should have member function definitions which will override the pure virtual functions in the abstract class. When should we use abstract classes when using the base class directly has no meaningful purpose and it only makes sense to use it as a derived class. So, here is an example that we have already seen. So, if you recall the bank account example where a person does not just have a bank account it is either a savings bank account or a current bank account or maybe some other kind of bank account. So, really when we want to instantiate an object we want to instantiate an object of a savings account or a current account not just a bank account and so that is why instantiating the class base the base account by itself has no meaningful purpose and so therefore the base account could be specified as an abstract class. It is always intended that we are going to derive some other classes from it like a savings class or a current class and objects are going to be instantiated only for these derived classes not for the base class. So, here is an example. So, here is the base class and in this base class I have two member methods both of which I have declared as virtual, but then I have also this special thing assigned 0 and this is how we specify what are called pure virtual functions. So, when I write a virtual function and say equal 0 then what I mean is that this class in which this virtual function assigned 0 is being specified this is an abstract class this is a pure virtual function we are not going to give a definition of this function in this class and why is that because this is a abstract class it is always meant to be used as the base class of a derived class and in the derived class we are going to define what these member functions call and print info are. So, a virtual function which is specified like this which is the usual virtual function specification and then equals 0 this is called a pure virtual function it does not have a body at all and it immediately makes the class in which this is defined as an abstract class. So, here is the derived savings class in which note now that I have redefined the call and the print info methods here is the current class which is also derived from the base class and I have redefined the call and the print info method and here is a main program in which if I try to instantiate an object of the base class I will actually get a compilation error because this base class is an abstract class it does not even have a definition of the methods call and print info these are pure virtual methods over here pure virtual functions over here. So, you cannot really instantiate an object of the base class you can only instantiate objects of derived classes like I can instantiate an object of class savings or I can instantiate an object of class current. However, I can have a pointed to the base class and to that pointer I can assign the address of an object of savings class or an object of the current class like we have already seen earlier and then when I say BRO call I go to the base class this is an abstract class in which there is a virtual function which does not even have a definition. So, I have to go to the context in which this call is being made this invocation is being made and the context is B is pointing to an object of class savings. So, I have to invoke the method from the class savings and similarly for print info. So, here you will see savings call and savings being printed out over here the same B which is a pointed to the base class is being assigned the address of an object of the current class. And then when I say BRO call BRO print info B is just an abstract class it does not even have definitions of call and print info these are pure virtual functions. So, when I say BRO call I have to find the context in which this method is being invoked the context is that B is pointing to an object of class current. So, I have to use the definition of call as in the class current and similarly I have to use the definition of print info as in the class current and so current call and current are going to get printed over here. Here is another example of an abstract class this is the base class in which I have declared one pure virtual function. But there is another function here another member method here which is neither virtual nor is it pure virtual and here is a derived class class savings which has its own definition of the pure virtual function over here and here is the class current which has its own definition of the pure virtual function over here. In this case as you can see in the savings account the interest is like 10 percent here in the current account the interest is like 15 percent. And now of course in the main program I declare an object of class savings an object of class current and when I say S dot set balance S being an object of class savings inherits the data members and non-virtual member functions of the class base. So, S dot set balance really goes and invokes this note that this is not a virtual function of the class base. So, this is inherited by the class savings and this gets invoked and balance for the object S gets set to 20,000 and then we print this savings interest and then we call S dot get interest and S is now an object of class savings which is also an object of class base. But here get interest is a virtual function in the class base in fact it is a pure virtual function and it is redefined in the class savings. So, when I say S dot get interest it is this function which gets called and it returns the value that you will get by doing this calculation. So, in this particular case as I said S dot set balance really calls this S dot get interest calls this and 2000 gets printed. Similarly, C dot set balance C being an object of the class current which is derived from the class base and set balance being a non-virtual function in the base class. C dot set balance will again invoke this and so now the data member balance of the object C is going to be set to 20,000 and then when I call C dot get interest because get interest is a pure virtual function of the class base. C dot get interest will invoke the get interest as defined in the class current and it will return whatever is returned by this calculation which in this case turns out to be 3000. So, for abstract classes what you need to remember is that these are used only when the base class is meant for derivation purposes not for instantiation. You cannot instantiate objects of an abstract class. An abstract class helps in readability and understanding because the moment you see a pure virtual function you know that this is an abstract class. It also prevents accidental instantiation of the abstract class because the compiler is going to complain about that. So, in summary in this lecture we looked at polymorphism in C++ programming, we looked at virtual destructors and we also looked at the interesting concept of abstract classes. Thank you for your attention.


Personal notice, dangerous my stock and trade. If the job's too tough for you to handle, you got a job for me, George Valentine. Write full details. Greetings, mystery lover. Time for another Let George Do It adventure. And if you're a music lover, you'll go for this one, I'm sure. It's called Solo in Whispers. And it's all about an opera singer whose basso was a little too profundo. So in order to quiet the lad, they gave him a mute, made out of lead. About three ounces worth. And you know something? It worked. Dear Mr. Valentine, really I do need your help to figure it out. Because it's rather the sort of thing that makes a man lose a lot of sleep. And at the age of 45, I find that sleep is almost as important as food. You see, I went to the gate this morning, our place is out in the country. And there was a messenger with a package and I signed for it. Nothing extraordinary there. And you'll probably think there's nothing extraordinary when you have to sign for a package along with this letter. Hey, what's this, Bruxy? A package? Uh-huh, it came with a letter. Oh, what's in it? Well, a record. I already unwrapped it. Anyway, Mr. Valentine... Phonograph record. Looks like a blank one from here. No, no, the other side, I guess, see? Oh, yeah. But it's still blank in the middle. It's still blank in the middle. Anyway, Mr. Valentine, I'd appreciate a call from you on the subject of why it is unnecessary to explain my whisper. Whisper? What's that? It's what? Well, that's what he says. Why it is unnecessary to explain my whisper. Oh, well, maybe it isn't his. It's in quotes, George. And that's all. Sincerely, Pietro Savio. Huh? Well, come on, come on. Play the record. Here we are. Okay. Pietro Savio, the man bothered by a whisper. You, too, can hear voices. You can hear horns and drums, too, if you got it bad enough. Sounds like he got his records mixed. Yeah, I've heard that. Come to the son, Rimsky-Korsakov. Angel, you should be on a quish. Only that's kind of a peculiar whisper, wouldn't you say? Maybe you just heard this played too much. It's too poppy. It's from an opera, George, La Coque d'Or. Not the only one I remember. I saw it twice. The whole? The Golden Cockroach by Rimsky-Korsakov. I know, so I'm getting an education, but I don't see what this... George, maybe Mr. Savio is bothered by a woman. He sounded like the type of woman. That's what the opera's about, I think. It's a fantasy. It's about a king who's given this magic golden rooster to watch over him and his kingdom, and he finally strikes down the king himself with its beak.  I mean, she sings this song. She's the one who makes a fool out of the king.  Ah, it was ever thus. Nice melody, though, isn't it? Listen. We heard it all. Still no whisper. No. What on earth was he talking about? Rook says there's only one way to find out. That's to ask him right back. Well, personally, I think he's a little off of me. I will soon find out. Hold everything. Hello. Mr. Pietro Saville, please. Will you call him? Mr. Pietro Saville can't come to the telephone, Valentine. He's dead. Hey, who is this? Riley? Yeah, listen, Valentine, get out of here fast. Well, yes, Saville's been murdered. He was struck down by the golden beak of a rooster. A rooster? Yeah, yeah, you heard me. A thing called the golden cockerel. You are listening to Let George Do It. Our adventure will continue in just a moment. Now back to Let George Do It and George Valentine. Well, that's what somebody called it. But it's just a fancy, gold-headed cane. Well, it's shaped like a beak, isn't it? A rooster's beak, Miss Brooks?  Well, it's sure heavy enough. Yeah, I'll say it was. His wife first attacked the fancy name on it when she saw the thing lying beside the body. You see, this happens to be the house of the opera star Pietro Saville. Oh, so that's... and his wife? Yeah, yeah, his wife's Lorna Saville, soprano. Of course, Lorna Saville. So this record he sent was the right one. Opera all over the place. I suppose it was. Only who sent it to him? And why? I told you what I said about the cook door, the story of it. Yeah, yeah, yeah, sure, Miss Brooks. But this guy and his wife were happy enough, I think. They just got back from Europe. Then why did she say Golden Cockerel the minute she saw this cane? How should I know? But what did she say she meant? She didn't. But didn't you ask her? How could I? She fainted. Well, maybe she heard the record her husband got. I was thinking about it, that's all. Yeah, maybe a million things in a case like this. A guy gets a phonograph record with music from a certain opera and then gets killed by the same weapon. What kind of a case? You know that record was homemade? Huh? Yes, you could tell. Oh, I don't mean the singing part, the music, but it must have been a re-recording. Someone must have taken the regular commercial record and copied it. You know how to take a pretty fancy machine to do that on, wouldn't you? That's what I mean, George. A big console job with its own microphone and all kinds of stuff. Like that one right over there. Hey. Mind if I take a look? I brought the record along. Come in, Riley. Huh? No other clues, not one. Oh, why ask me? The body was right back there by the door. Yeah, yeah, the door was half open, so it could have been somebody from the outside or somebody from the inside. And if it was outside, the murderer couldn't have been seen, huh? Oh, you two can own an exclusive hillside lot with a beautiful view of the rocks in the valley and not another house for over a half mile. You two can have privacy and never be seen. All right, all right, I get the idea. Nobody saw anything. I'll meet you downtown, Riley. Right now I'm going to send for Mrs. Seville. Well, Mr. Valentine? Mrs. Seville, you have a face that a man would never forget. Well, most men notice my figure, too. I remember a picture about two years ago. You were mixed up in the breakup of the Carlotti Opera Company. We both used to sing for Carlotti, Pietro and I. Why? Oh, I don't know. I just remember it that's all. There was a lot of talk in the scandal columns. Something about a fight. That's what a lovely memory. Of course there was a fight, a beautiful fight. It took three stage hands to break it up and a foolish young man from the chorus even went to the hospital, I'm told.  All I saw was that that's what broke up the opera company. My husband and I had to leave for Europe, that's all. We had engagements to fill. The cause of the fight was you and some playboy baritone. Stop it, stop it, stop it. All right, all right, I'm sorry. It might have been just gossip. We had nothing to do with this, Mr. Valentine. With Pietro's death. There's no conceivable connection. My husband and I were quite happy. Now please, please won't you leave me? Yeah, Bruxy. George, come here. I found it, the whisper. What? What are you doing there? The whisper was on the record. I said one side of it was blank, remember? But here, look, this just looked like a border. But it's three or four grooves right around the edge. Here, listen. So that's what Savelle was talking about. Here. I am sure it is unnecessary to explain my whisper because the record on the other side will explain itself. And the music did explain itself, didn't it, George? The man who was killed by the Golden Cockroach. Mrs. Savelle, whose voice is that? The whisper? No, I don't. Just a whisper. That's why whoever it is, whispers to keep anyone from knowing. You can close the machine now, Miss Brooks. My husband couldn't figure it out. I can't figure it out. I'm certain you can. Oh, sure, lady. Hey, Bruxy, is that the record you brought out here, the same one? Of course it is. Yes, George. You saw me bring it, the one Pietro Savelle sent us, the one he received. What makes you so positive, Mrs. Savelle? And why didn't you want Miss Brooks playing around with this machine? Why have you been staring at me? Mr. Valentine, please. George. Yeah, Bruxy, another record, just like the other one. Here, let me see. Here, play it. Those same grooves, and it's blank in the middle. I'm sure it is unnecessary to explain my whisper. Because the music on the other side will explain itself. Come on, come on, turn it over. But it's exactly the same. Looks just like the other one. George, it's not the same. All right, Mrs. Savelle, let's have the story on this record fast. The record, Mr. Valentine? What about the record, don't you know it? Aren't you familiar with my greatest success? Salome. Thank you, my dear. Yes, it's Salome. It's Salome's dance. But this record, where did it come from?  But the postman brought it just this afternoon, and there didn't seem to be a return address. To you, right? It came to you. Yes, to me. Isn't that funny? Oh, no. No, Mr. Valentine, I don't know anything else. And if you'll excuse me, I'm going upstairs. I'm walking upstairs. George, she got a record, but she didn't want us to know about it. Even after her husband's... I know, but skip it. Now listen, Bruxy. What's this, our robot? Well, come on, come on, think. I'm trying to remember it. It's based on the Bible story, I guess. Yeah. Salome danced for King Herod. She demanded the head of John the Baptist. What happened to her? I don't remember. Get up there. Get after her, Mrs. Saville. Follow her upstairs. Whether she likes it or not, stay with her. I'm going to phone Riley. She's not there, George. This is the bottler, Paul. Okay, Buster, where did Mrs. Saville go? Just outside, sir. What's wrong? I told the madam about the wire I took over the phone. The wire? Western Union. I wrote it down. Here, give me that. I'm at my place down the canyon. Please come at once. Signed Eric Stanton. Place down the canyon? It's less than a mile around the hill trail. But who is it? Who's Eric Stanton? He used to be with the Savilles and the old Kalate Opera Company. An old friend. A singer. A baritone. Slow down, will you, Mrs. Saville? I don't want you with me. You're going to have to stand me, lady. Oh, George, she'll sprain an ankle running on that narrow trail. Put those rocks on the side of the hill. I'll get her. I said slow down, lady. All right. I'll tell you when I go. Wait a minute. Wait a minute. A rock slide. I'm afraid she's dead. Crushed her before she even knew what happened. But... But that record, George. Solomy. I remember now. At the end of the opera, Solomy was... was crushed to death. You are listening to Let George Do It. Our adventure will continue in just a moment. Now back to George Valentine. It's unnecessary to explain my whisper. Because the music on the other side will explain itself. These few words on a record. And on the other side, music from an opera. The beautiful Lorna Saville received such a record with the music of Solomy. And now she's dead, like Solomy, crushed to death. Her husband, Pietro, the aging opera star received his death notice in the form of music from LeCouc d'Or. He too died in the same way as the hero of that opera. If your name is George Valentine, I can't help accepting this case as a personal challenge. Oh, if I'd only moved a little faster, I might have saved Lorna Saville. No, George, you couldn't have helped her. Now the trail was rigged in advance, Valentine. Don't you understand nobody ever used it and it had been weakened so much that the weight of a mouse would have started the rocks rolling. The telegram sent from that Eric Stanton brought her onto the trail. Hey, you're not going to start reading that book again, are you, Valentine? The stories of the operas. I swiped it from the Saville's library, Riley. Yeah, well, I'm not complaining.  I'd love one. How many operas are there? A hundred, maybe? And at least half of them ending in death? Real fancy dress-circle deaths that somebody's copying. Lieutenant. Yeah, yes, Sergeant, what is it? No point in going up to that other house, that Eric Stanton's place. Why not? The place is all boarded up. There hasn't been anybody in that house for months. Okay, all right, buddy. The telegram was deliberately sent to get Lorna Saville killed. But before you start scaring yourself over what might happen to 50 other people, let's stick to what we know. Like that man Carlotti I told you about. The one who owned the opera. That's our job, Riley. Find Carlotti. See, see, it used to be the Carlotti opera, but now all I own is an empty theater. I am not what you would call a practicing impresario. Mr. Carlotti, the company broke up two years ago, right? When the Savilles were singing here in town. Oh, such wonderful voices, both of them. See, you are right. Now, they left immediately for Europe, but it wasn't a philic contract, was it? A lot more likely it was to break one, yours. It was a big scandal and a fight and all kinds of things. Oh, no, no, Mr. Valentine, I would not see. So that one man landed in the hospital and it took three minutes. Yes, yes, I closed the opera. The next day I have lost touch with everyone. It happens that way, but to blame... He received his record, he sent it to me. But when his wife received one, even after she knew what had happened to Pietro, she kept quiet. On top of that, she gets a wire signed Eric Stanton. You see what I'm driving at? Yes, yes, it was Stanton. Always Stanton. He has such a smile, so many women, such a voice. And in Cove Door, the king refused to give up the queen. Two years ago, that was the reason for the fight.  Pietro kidnapped his wife to Europe and Stanton too is gone, to South America. Everyone is upset, of course, but time is such a healer. Mr. Carlotti, Lana Seville kept quiet today because she thought she knew whose whisper it was. Who sent the records? And she had to find out for herself. Then I suppose I must tell you, Stanton is in town. What? Bruxy Carlotti. I see him in the street opposite Richter's music building a month ago. He's not singing this season, just the social visits. He has an apartment. I wish I could protect him more from what you are thinking. This may be where Stanton lives, but he sure ain't here now. Hey, Riley, over here. What is it, George? We set it to take a re-recording to do this. Look there. Yeah, Angel, build into the wall. I see. Holy smoke, there's a turntable, a microphone, the works. It's even more complete than the one at the Seville's. Wait a minute, no wastebasket here, look. A record, a platter that's scratched and cracked, a couple of chips broken out of it. A record just like the others. Sure, even a professional couldn't make home recordings without making a few mistakes, and it's not a platter or two. Yeah. Lieutenant, it says Eric Stanton left here just a few minutes ago. What's that? Yeah, he went down to a place called Richter's, some big music place where you buy phonograph records. My dear sir, we sell more phonograph records than any other company in the city. Our classical section on the third floor has 10... Never mind the advertising. And when it comes to opera, I... Yeah, look at this. Oh, dear me, what a beautiful bed. That's better, Buster. Eric Stanton, is he here? The better tone? Nearly all great names. Come to us, sooner or later. He said, is he here now? That's what I was going to say. Yes, upstairs buying records, I think. He comes quite often. Such a game. Ah, stairways over here. Come on, veterans. Wait a minute, Riley. Stanton can't get away. Look, friend, do you know opera yourself? Come here, over here, the demonstration. Well, of course, my field is really instrumental and at home I like Bach.  Oh, dear me, it is quite mutilated, isn't it? Skip it, just listen. I really don't understand. Valentine that record's different from the others. Of course it is, Riley. How about it, friend? Oh, such a magnificent thing. It's Mozart. Yes, Mozart. Yes. Mozart what? It's from Don Giovanni, the champagne opera. It's such a shame the salesman can't sing it for you.  What? Remember I've been reading a book, Riley. This is one opera we're going to beat to the final curtain. Hey, what's that? Don't you know? Step on it, run. No, it's not. Come on, Riley. Hey, listen. It's the same record. Uh, Giovanni. Sure. Somebody's even got the stage set for it. Stanton. Stanton, where are you? Riley's not here, Valentine. Those booze. Try those booze. You've only got a minute. What?  That bell was the fire alarm. Hey, Stanton! But how do you know he's here? Yeah, Riley, this one. Oh, it's locked. In the opera, Don Giovanni couldn't escape the fires that were there to burn him. It was Stanton. Come on, once more. Let's hit it together. Stanton! Hey, he's passed out. Hurry, get in shoulders. It's still plenty of time. Congratulations, Valentine.  So is the murderers, Riley. So is the murderers. Now this is the place, Bruxy.  Lieutenant Riley's still back at the fire? Taking Eric's stand to the hospital. Here we are of these iron steps. Yeah, it's so dark. Nothing emptier than an empty theater, is it? Or an opera house backstage. But the office must be just ahead up there. Bruxy, I could have waited for Stanton to wake up, but somehow I think the murder will be moving fast right now. Here we are. Senior Milo Carlotti. No casting today, no singers required. Such dusty sign. Not here. The place is empty. Yeah. George, are you sure Stanton knows? Oh, not by any clues. It's not that kind of a case. There's a madman, but not a madman who goes around killing everybody. Well, all those people were tied up together, Lona Saville or husband Eric Stanton. George, let's see him quick. Come on, wait a minute. Uh, who is it? George, he's on the steps. His whisper. His whisper. That's what we've been wrong about, Bruxy. Thinking it was somebody hiding his real voice. It is so nice to find you here, senior. That guy isn't Carlotti.  But so many steps, senior. The whisper that Stanton must have recognized and gone straight to confront to ask why. A man who has to talk that way, who can't talk anyway else. Sure, that's why he whispers. Now, Mr. Carlotti, I shall tell you what I've done, what I'll do to... Oh, no, you don't bust a... Who are you? Well, we might ask you the same question. I'm not so sure, Angel. Maybe we can guess. Who could have locked Stanton in that booth with that fire? Who'd be in the best place to make phonograph records?  It was greater than Stanton's. It was greater than Seville's. Huh? Carlotti never would admit it, but it was my voice, mine. And listen to it for two years, just an echo. George! I know, I know, friend. You're pretty sorry for yourself, aren't you? You work in the music store, don't you? The salesman there. Yeah, salesman me. The one in the floor walker said it sung an opera. Said it was so tragic, such a shame you couldn't sing for us now. Oh, no, no, I will sing if you want. There's somebody else who got hurt in the big fight when it took three stage hands to break it up. And a foolish man from the chorus was even sent to the hospital. I should have sung leading roles, but I was knocked to the floor. The stage brace hit my throat. It was their fault. He closed the company. I never had another chance until now until... George! Hey! Don't follow your fault. The railings, look out, George! Yeah! He went right over, Brooks. Oh, he's not moving. He hit the floor. He hit the stage. Well, maybe that's what he always wanted. Set a stage. Back to the conclusion of our let George do it adventure in just a moment. There was a terrible thing that happened to him. A singer to lose his voice. And all from just an accident. From a thoughtless quarrel between some other people and he was just a bystander. Ah, that was just his version, Miss Brooks. They didn't know he'd been hurt that badly. Stanton even said he went around to the hospital afterwards but the guy wouldn't even see him. And Carlotti offered financial help but the guy turned him down. Carlotti says he never had a voice in the first place. Just a failure who wanted something to blame him on. Boy, I thought mysteries were rough but grand opera, holy smoke, bury him alive, burn him up, stab each other. You're not kidding. So let's forget it for a while and get some different kind of music. All right, darling. I'll calm you down with the radio. Good. Rippling rhythm, maybe? Some nice sweet jazz. That's it, Angel. Send him out of little stuff that relaxes. I'll be glad when you're dead you'll rascal you. Oh, no! You have just heard Solo in Whispers, another Let George Do It adventure. Robert Bailey was starred as George Valentine with Virginia Greg as Bruxy. David Victor and Jackson Gillis wrote the story with music by Eddie Dunstetter. Now this is yours truly inviting you to another visit with Valentine when you will again hear what happens when you Let George Do It.


generator to it so that when I sort them, it will give me a random shuffle. And then if I just pick the first 10, for example, I will have picked kind of a random sample of the entire population. That's going to be the idea. Now I would like to do this multiple different times because I want to mirror the concept of running multiple tests, meaning taking a random sample multiple times. So I'm going to try to do it like 75 times. So what I want to do is make, I'm going to make one, two, three, four, five of these random generator tools, meaning I have all of the data in the entire population and then a random generation column next to it. And then I can sort each of these and that sorting will shuffle them each time. So I'm going to shuffle each of these each time, which gives me a whole set of the entire population randomly shuffled. And so if I want to then make 75 samples of however many, like 100, 175 times, I can reshuffle these every five times. That's one way I could do it, right? So I could then go over here and say that, that we're going to then copy and paste the same, well, let's do it this way. First, I can make it even a little bit easier. I can say that these are my samples now. So this is just going to say equals and I'm pointing then to this cell. So that nine, so this whole column is simply pointing to, and this is 20. That just goes down to 20. So I'm just pointing to this cell, this cell, this cell, this cell. This is a formula referencing the table. And I just chose 20 out of however long the table goes. So now I've got a count of 20 that were randomly selected out of the entire population and I have 20 different samples of, I mean, I'm sorry, five different samples that are 20 long. Now, what I want to have is 75 samples. So what I could do to make this whole table of 75 of them is that I can do five at a time, right? I can copy this, this table, I can paste it here. When I paste it here, I'm going to paste it just the values, not the formula, just the values. And then I'll have five randomly generated samples of 20 in the sample. And then I can do it again, right? I can reshuffle these shuffle, shuffle, shuffle, shuffle, shuffle, which reshuffles this whole set. And then I can simply copy the, these again, and that would be another five going out to 10, right? And then I can do it again. It's kind of tedious, but I can, this is a, this is a way that you can start to play with larger kind of sets of tests in Excel to see the impact on things like what the histogram is going to look like and what not. As you increase the sample size, you can play with these different random number generating techniques that can help you get a concept of what's going on. So I'd shuffle them all again, and then I copy these again, and then I paste it over here for the next, for the next five. And I do that at five at a time until I get to what I wanted, which I think was 75, 75 samples, all of which randomly selected, randomly selected 20, 20 items. So now we can, so now we can imagine our tests. So, so now we can imagine our tests and say, well, these are the results. If I, if I take the average of the sample, I'm going to get my results down here. So, so in this case, we had our, these, each of these columns, the data in the column represents the calorie count for one, for one sample. So, and then if I take all of those and I take the average of them per column, here are the averages for these 75 samples that we took of 20. And then I might want to put this in a vertical format. So I might take all of these that I did 75 times, put them vertically, which we can do in Excel fairly quickly. So now I've put them in a vertical format. And then I've compared it to what the actual data was, which was 2189. So remember the actual data over here, when we did this on the full dataset, we're imagining this is the entire population. It was at the 2189. And then we took 75 examples, 75 samples of 20 each to see how close


So, this video is basically about the surface structures such as 100 sugar bands, incremental lines of rhesus and various surface structures such as pericameter, prismulus, enamel, nasmith membrane which is enamel cuticle, enamel lamellae, enamel teffs, dentino enamel junction, enamel spindle and enamel rod ends. So, these are the structures which you see in surface reaches and other type which is the junction of dentine and enamel which is a scallop structure and enamel spindle and organoblastic process. Okay, so let us see the surface structures and these are in detail. 100 sugar bands. 100 sugar bands, it is a regular change in direction of roads responsible for the appearance of alternating dark and light strips of varying width. So there will be dark and light, this is not possible to show it here, so there will be black and white appearance in when we take sections of teeth, we can see the dark and light lines. So these changes is due to the change in direction of enamel rods. Okay, so this alternating dark and light strips of varying width is known as under sugar bands. So this is most commonly seen in longitudinal ground section. Okay, so when we take longitudinal ground section, we can see 100 sugar bands. So they originate from DEJ and which pass outwards ending in some distance from outer enamel surface. So it originates from DEJ and it end from little distance from outer enamel surface. So this could be due to, there are many things, it could be due to the change in calcification process. Calcification will not happen very regularly, so sometimes the change in will be rhythmic matter but in various frequency. So that change in calcification process could be the reason for under sugar bands and they may not be an optical phenomena but they are composed of alternate zones having slightly different permeability and different content of organic material. Nulled enamel is an optical appearance of interwind bundles of rods at incisal and incisal edge and cuspel tape whereas 100 sugar bands it is alternate white and dark bands or strips at various width which could be which is not an optical phenomena but they are composed of alternate zones having slightly different permeability. So slight different permeability with different content of organic matter. So that is why it is seen as white and black alternating bands. So that is 100 sugar bands which is very important. Now we have incremental line of red Cs. Next we have incremental lines of red Cs. So these are brownish bands which is seen in ground sections of enamel that illustrate successive apposition of layers of enamel during formation of the crown which are known as incremental lines of red Cs. It is nothing but we know in enamel mineralization will happen layer by layer the minerals will be deposited. So this particular rhythmic pattern of apposition this mineral deposition by layer by layer. So in the crown section it is reflected in ground section as particular lines. So these lines are nothing but indicative of mineralization, rhythmic mineralization pattern. So that is known as incremental lines of red Cs. So 100 sugar bands is another type of reflection and oblique light that is also another pattern of optical appearance that is white, alternating white and black bands in oblique light when we take a longitudinal section. So similarly incremental lines of red Cs is also a brownish band and which is seen in ground sections of enamel which is indicative of mineral apposition. So these longitudinal sections which surround the tip of tentane from DJ in cervical parts which from oblique deviates to occlusion side. So we can see at the tip of tentane which surrounds the tip of tentane which surrounds the tip. It is not easy to show in this type of board. So in transverse section so they appear as concentric circle it has been attributed to the periodic bending of enamel roots. So it is due to the periodic bending of enamel roots and there will be physiologic calcification happening. So why it is important because this broadening of incremental lines may reflect the metabolic disturbance at the time of matrix formation. So if something happens so if it is broader then there will be some disturbances happened in matrix formation. So my metabolic disturbances is causing this change so we can make out that something happened during the matrix formation. So that is the importance of this incremental lines of radius. So that is about incremental lines of radius. Now we have surface structures, various surface structures such as enamel, cuticle, enamel, enamel types. We have cracks, road and peri-chaimata. We have also peri-chaimata also as a surface structure. So we are going in detail about the surface structure. So we have various surface structures. The first one is prismless enamel. So we have prismless enamel, peri-chaimata. Road ends, enamel cracks, enamel cuticle, enamel lamellae, enamel tufts. So let us see what is prismless enamel which is present in 70% of permanent teeth and all deciduous teeth which found least over the cusp tip and commonly in the cervical area which is least in cusp tip and commonly in cervical areas and which will not be visible and all the epithelial crystals are parallel to one another. And they are perpendicular to stria of radius. So they are more mineralized than the bulk of enamel which is present beneath that. So that is structure less or prismless enamel. So that is about prismless enamel. Now we have peri-chaimata. Peri-chaimata, these are the transverse wave-like grooves believed to be the external manifestation of stria of radius. So stria of radius which is externally manifested as peri-chaimata. So there will be 30 peri-chaimata per millimetre in the region of cemento enamel junction and their concentration gradually decreases near occlusal or incisal surface at 10. So here it will be 30 per mm and at the occlusal or incisal edge it will be 10 per mm. So it is the external manifestation of incremental line of radius or stria of radius and enamel road ends. So we have enamel road. So we have another structure which is a surface structure which is enamel road ends. So these are concave and very in depth they are shallow, surveyically and deep occlusally. And bits of about 1 to 1.5 micrometer in diameter and small elevations which are known as enamel caps. So we are talking about enamel road ends, enamel road ends. If it is between 10 to 15 micrometer which is known as enamel caps and if it is very larger enamel elevations which is known as enamel broads, enamel broads and enamel caps. That is enamel road ends. Now we have enamel cracks. They are actually outer edges of lamellae. They originate from incisal edge and extend to varying distance in enamel in perpendicular direction towards dentino enamel reaction. So if any crack is present here it will be starts from here towards DEJ. So mostly it will be 1 mm in length. So these are known as enamel cracks. Neonataline we have neonataline in surface structure of enamel. They are like deciduous teeth when they develop partly before and partly after birth. So the boundary between these two portions in enamel is marked by accentuated incremental lines of red seaus which is known as neonataline. So neonataline is nothing but accentuated red seaus, line of red seaus which is showing the demarcation of the portion which is formed before and after the birth. So some teeth which partly develop before birth and after some portion after birth. So these are the line which is differentiating these two are known as neonataline or ring. So these results from abrupt change in the environment and nutrition of newborn infants. So prenatal enamel is better developed than postnatal enamel and pericameta are absent in prenatal enamel. So that was about enamel neonataline. Now we move on to enamel cuticle. Enamel cuticle they are delicate membrane covers the crown of newly erupted tooth which is known as Nasmith membrane which is very important Nasmith membrane is nothing but covering of newly erupted tooth. So these Nasmith membrane are delicate membrane which covers the crown of newly erupted tooth or which is also known as primary enamel cuticle. So Nasmith membrane is enamel cuticle. This is secreted after the epithelial enamel organ retracts from the cervical region during tooth development. It protects the surface of enamel from resorptive activity of adjacent vascular tissue. So the primary enamel cuticle or Nasmith membrane's job is to protect the tooth from adjacent resorptive activity. So we have primary enamel cuticle and secondary enamel cuticle. So primary enamel cuticle which covers the entire crown of newly erupted tooth which is removed by mastication which is secreted by post ameloblast whereas the secondary enamel cuticle which covers the cervical area of enamel thickness up to 10 micrometer which is continuous with cementum which is probably mesodermal origin and that is the difference between primary enamel cuticle and secondary enamel cuticle. So these all are short notes enamel cuticle, hander, sugar bands, incremental lines of red seaus, ferricahimata, enamel roads, Nasmith membrane, enamel cuticle. Now we have enamel lamellae, these are leaf-like structures, enamel lamellae are leaf-like structures so it will be like leaf-like structures that extends from enamel surface towards DEJ. So this is external surface, so this is DEJ, so it starts from here towards DEJ. And which is basically organic and a little bit of mineral composition which originates in develop in planes of tension when road, the enamel road cross such a plane they may not fully calcify. So when tension is there there will not be proper calcification. So that places a crack may develop. So this crack is filled either by surrounding cells if it has occur in unerupted tooth or by organic material if it has occurred after eruption. So the tension happens, so during such planes if tension is happening while eruption what happens they will not completely calcify and if the disturbance is very severe there will be a crack formation and if it is before the tooth eruption the crack is filled by surrounding cells and if it has occurred after then there will be organic content. So that is known as enamel lamellae. Basically it has three types, type A, type B and type C. Type A is restricted to enamel so this is enamel, this is enamel and this is dentine, this is dentine, this is enamel so this is dentino enamel junction. So type A is restricted to enamel so this will be here so it starts from outer enamel surface it will be here that is type A. Type B may reach up to dentine so if it starts it may reach till here enamel lamellae and it is mostly degenerating cells. So type C is containing organic material and it may invade, it may cross this one, dentino enamel junction that is type C. So the significance is it is a site of weakness in tooth and may form a road of entry of bacteria and initiate dental caries because it is poorly calcified. There is no proper calcification happens here and the next structure is enamel tufts. So enamel lamellae if you finish enamel tuft is thin ribbon like structure which is resembling a tuft or grass similar to enamel lamellae so this is like tufts or grass which is created by examining such area under low magnification of ground section. So we can observe it when we check it under low magnification in ground section. So these consist of basically hypo-calcified enamel rods and inteprismatic substances. So that is enamel tufts. So they arise from DEJ. So enamel lamellae which is erased from outer surface but this enamel tufts arise from DEJ. Enamel lamellae arise from outer surface enamel to towards DEJ. So enamel tufts arise from DEJ and it reach up to one fifth to one third of its thickness and their presence and their development are consequences of an adaptation to spatial condition of enamel that is a adaptation mechanism. So it basically significance of enamel tufts it prevents enamel fracture. So next we have dentino enamel junction. So this particular blue line is dentino enamel junction which is basically scalloped structure. So surface of dentine at dentino enamel junction is pitted and shallow depression of dentine which fit round at projection of enamel. It appears scalloped due to the mixing of crystals of dentine and enamel each other. So there will be mixing of enamel and dentino crystals. So it creates a scalloped structure that is dentino enamel junction. So enamel spindles we have enamel spindles. Next enamel spindles are odentoblastic processes which pass across DEJ into enamel. So their end is known as enamel spindles. So sometimes odentoblastic process starts from dentine and it crosses the DEJ and reach up to enamel with a thickened end and they have been termed as enamel spindles. So this direction of spindles and rods are divergent as rods are formed at right ankle to ameloblast and spindles are parallel to ameloblast. So enamel spindle is always parallel, enamel spindle which is parallel to ameloblast whereas enamel rods are right ankle to ameloblast. So that is about enamel spindles. So we have covered the structure, surface structures and other structures of enamel. So we are finishing our part one. Second part is amelogenesis, the formation of enamel. So we will be checking in detail already we know how enamel forms in our tooth formation stages. Anyway let's wind up the session one of enamel. So we have learned about thickness, color, hardness, solubility, permeability, translucency, chemical properties, various proteins and various structures. So structures are rods, road sheath, interprismatic substances, more about striations, more about direction of rods and hunter sugar bands, incremental lines of red sea and various surface structures such as pericameter, presemblest structure, enamel cuticle, enamel amelae, enamel tufts or entoblastic crosses and enamel spindle, dentino enamel junction, enamel cuticle which is also known as nasmitz membrane, enamel rod ends, enamel caps and enamel brush. So all are various structures which is present in enamel. So it can be asked as a short note, a short essay and a long essay. So it's a very, very important session. So I'll come up with enamel formation or amelogenesis in my next video of enamel. Thank you.


If I have a headache first thing I do is drink about four cups of water and I can identify my dehydrated Was it the number one cause of headaches is dehydration or? Should I actually grab the ibuprofen? so typically When people increase their water to a gallon a day they see Amazing benefits in their skin. I'll be 51 in a couple months completing my 51st year And I when I started drinking gallon of water a day slowly building up My skin got better. I was they say Water is like Lotion for the body on the inside. You look better. You feel better your digestive issues Can improve as well with the elimination 16 cups is one gallon. It's boring. I get it. So typically I say get a few crafts I make cucumber melon water in one carafe. I Make strawberry mint water in another carafe I'll make apple ginger water in a third carafe and my favorite is tomato basil water You wouldn't think that a savory tomato basil water is delicious But it is and take as long as you want I put this in the weak one But you can call that step one these steps in my program build upon each other Once you've mastered the water or you feel ready to move on to part two then you move on to step two I'm gonna pass out some snacks and some of these are doubled up. So feel free to have more than one Thank you You start with that who wants to do number two read it out loud Give up all wheat products and still drink a gallon of water a day. Why do you think I would want you to give up wheat products? Anybody yes, my darling If you have Arthritis joint pain Swelling of the hands Working out when you're way younger than I am and still feeling like crap afterwards I would suggest the first step after lubricating your body with the water is giving up wheat because gluten comes from the Latin word for glue and It's highly processed most wheat products are highly processed You're not going into the forest and picking a wheat and chewing on that wheat berry It has an outside shell just like beans and endosperm Why it wants to procreate it's protecting itself the more you grind wheat the higher the sugar index the glycemic index The same teaspoon of sugar that you eat Whether it's ground up from wheat or whether it's ground up from sugar cane It's still going to move through the body the same, but when you take wheat and you grind it up Wheat becomes higher sugar and higher glycemic index the more fine the powder is that you grind the flour That same teaspoon of wheat becomes higher on the glycemic index, which yes Causes systemic inflammation. It's not necessary. You may not have an allergy, but our body Ancient body caveman body was a hunter or a gatherer In order to survive they weren't picking wild wheat and grinding it and baking it That's something we do. So try that Week two or maybe it's going to take you four months to get off the wheat and There are salad dressings a lot of salad dressings have wheat soy and gluten soy sauce has wheat in it So therefore it has gluten in it unless you buy the one that specifically says gluten free Week three Anybody want to shout out week three So after you've mastered it doesn't have to be week three it could be month three maybe you're gonna take six months To be strong enough to say I'm not tempted by the cookies pies pastries Twinkies Donuts love my doughnut Maybe it's gonna take you a long time to get over that and that's perfectly okay Then once you've mastered that step and you're still drinking your gallon Then you try and give up all grains and it's only for a week or longer So you're building upon and the reason is Grains make you crave sugar because it turns into sugar. So Let's just talk about this. So there's a lot of So-called healthy foods that aren't so healthy hearty baked wheat snack crackers zero trans fat Naturally flavored on your pamphlet. I show you the secret names for MSG and one of the odd ingredients that they'll put on there is Naturally flavored or spices or naturally spiced So this is my favorite one because this is really special It's honey bunches of oats with Greek yogurt and mixed berries whole grain to unique granola's Wow, this has a lot of whole grain and a touch of wildflower honey So I'm gonna pass out these other things. There's a very deceiving hearty baked wheat cracker a wonderful naturally select fruit and nut trail mix and California Coloma graded Parmesan cheese Unless it says raw and you're shaving it yourself or it's been shaved typically. There's anti-caking agents in Parmesan cheese. All right, who wants to read week four? Yes, sir One Reduce fruits to one to two times a day always keeping the previous changes So if you're trying to get off the sugar wagon like a lot of us are This step by step by step Reducing it to one to two times a day with the fruit will help you with the cravings week five Joel Right, so after you've gotten that under control and remember this is only for a week or longer It may take you a month or two months To keep on drinking your water and reducing the fruit just so you get over the sugar cravings. I'm not saying it's forever I'm saying try and see what happens in your life So now I'm going to pass you out the alternative to all the sweet stuff So this is going to be a carrot Raw almond butter and homemade preserves and I put it instead of on a cracker or bread It's like peanut butter and jelly, but it's raw almond butter because when you have raw nuts and raw seeds Your body can absorb them better than if they're roasted. So if you want a treat, this is the treat to have Rather than a cookie or twinkie. Oh Raw cheese This is a trend that's become popular in the past three years most dairy products are homogenized and pasteurized Louis de Pasteur because there was no refrigeration when he was around he created a heat treatment of all dairy products that would kill most of the Germs that were making people sick most of the bacteria and it was because because there wasn't any refrigeration Can you read number six? So I do this on my website and my books and on my Facebook page change your oils What am I talking about all the oils that are in junk food and processed food are Hydrogenated oils So Hydrogenated oils are oils that are heat Treated to the point where the molecular structure of the oil changes and it adds to shelf life You're right you're brilliant your arteries don't know what to do with it and neither does the rest of your body so it turns it into bag cholesterol or it turns it into Abnormal body fat So change your oils. What are good oils? Olive oil Avocado in avocado oil. What are good oils? Coconut oil see we let eggs out of jail about 12 years ago. I saw those commercials now We're letting coconut oil and butter out of jail Canola oil is a highly toxic oil and I'm glad you are Telling me it's a good oil for years. I only bought canola oil Canola comes from a plant called the rapeseed the rapeseed plant Makes rapeseed oil. It's Canada's number one export when they decided to farm rapeseed oil Canada did not want the word rape on their largest export So they changed it to Canada oil Canola oil, but it is one of the shelf stabilizing oils that they in order to get The oil from that tiny seed. They must process it so much that it turns from a good oil to a bad oil when they add Hydrogen to oils it makes it thick like Crisco not lard That's natural from an animal I don't use canola oil anymore. I cook with coconut oil. I cook with Olive oil macadamia not oil walnut oil if you're gonna use Extra virgin olive oil Do not heat your pan on high If you're baking with it, don't go above 450 degrees because you don't want the smoke point of the olive oil To turn from a good oil to a toxic oil. You don't want the molecules to change the chemistry of it So typically I'll cook with a different oil and then add my extra virgin olive oil afterwards in order to get that olive oil flavor Number seven would you like to read number seven?  So by the time you get to there You I could try that for a week. So what am I supposed to have sweet and low? Splenda Chemicals I've discovered through my work at the Hilton two items that People have told me about One is called Lakonto. I buy the golden brown variety. This is only available online I don't work for this company, but I wrote them a letter telling them how much I love their stuff The golden brown variety of Lakonto. It's Chinese monk fruit la hangau and In Japan they have figured out how to Dehydrate it crystallize it and turn it into a brown sugar variety They also sell a white sugar variety, but for my white sugar variety because it's really expensive I use Xyla which is made from a birch bark tree This one Lakonto looks smells and tastes like brown sugar, and I'm gonna pass this around I want you to have a tablespoon or a teaspoon or put some in your hand And I'm also gonna pass around the Xyla and I want you to do the same thing Smell it taste it to me Lakonto brown It tastes like brown sugar But cold on the tongue. So that's why I want you to experience this. All right, let's move on to week eight Anybody want to read week eight? Thank you If you regularly consume meat or dairy make sure they're pastured not pasteurized and Grass-fed remember when we eat any animal we eat what the animal ate So if chickens who are not Vegetarians are out in the fields and they're eating bugs and berries and grass and nuts and seeds and doing their chicken thing Chickens aren't meant to eat grains and corn and all that stuff The chicken feed that the farmers give the chickens Chickens get stressed out their cortisol level goes up. They're getting fat We're collecting their stress hormones same thing with cows that are on feed lots and They're grain fed when that's not in their natural diet or in their natural habitat you ate what the animal ate if You can't afford a hundred percent grass-fed grass finished and you have to buy factory farm meats Then I suggest get the leanest cuts possible. Why? Why am I saying the opposite if you cannot afford a hundred percent grass-fed grass-finished meats by the leanest cuts of Regular store meat. Why do you think that is? All the toxicity is in the fat all the toxic stuff and of course the fear Right creates a higher cortisol level in the animal all the bad hormones if it's a factory farm feed lot animal They call it CAFO Then you buy the leanest cuts of meat if it's a hundred percent grass-fed a hundred percent grass-finished You can buy the fattiest cuts of meat because all the goodness is in the Saturated fat on the marbled meat and it'll help you absorb the nutrition from the veggies alongside of it Does that make sense? number nine Yes, my darling, please Very good give up beans and legumes, and it's only for a week Why would I want to give up beans and legumes when they're full of high protein? Any guesses about what we talked about? They're also full of carbs They're highly processed in order to be eaten Only 30% is protein and you may not get all of that That heavy heavy hard endosperm. It's protecting itself from being extinct Does that make sense? And I always say live by the 80-20 rule 80% eat clean and green 20% party like a rock star Happy birthday by the way She's gonna party like a rock star today Vegetarian I'm not vegetarian so I can't speak to that but I did gain 55 pounds when I was vegetarian for 19 years Yeah, I was vegetarian for 19 years because if I gave up meat I could eat a lot more cake Right Yeah So I did a swap out number 10 in The back number 10 Right to me. Yes. I want to hear from you guys. That's why I give you all my data. It's really important For me to understand how your health journey is going when you experiment with these things and like I said You already have enough in our everyday busy lives. I don't want people to be stressed out This list is not to make you stressed out This list is a gentle guidance if you want the information It's there if you want to try it it's there the scientific data and all my research It's in my book. It covers the four anti-cancelur hailing therapies that are food-based It covers my weight loss journey It covers a basic nutrition class what I eat now what I don't and why all right? That's it mingle eat