Welcome to part 6 of the lecture on machine independent optimizations. Today, we are going to discuss machine independent optimizations and continue with static single assignment form and so on. In the last part of this lecture, we discussed you know global common sub expression elimination and copy propagation and along with it we also saw a simple version of constant propagation. Today, we will see how to perform a major optimization called the loop invariant computation detection and code motion. So, informally we already know what loop invariant code is, but let us understand that with this example properly. So, the statements marked in red in this particular program are said to be loop invariant code. The reason is T 3 has been assigned a constant value address A, which is an offset for the array A inside the activation record and T 4 is nothing, but T 3 minus 4 again it is a constant. So, these two statements do not get any different values even you know during any number of iterations of this particular loop. So, it seems likely that the stroke can be shifted to a point just outside the loop and this is exactly what is called as code motion. These are said to be loop invariant code and moving them outside is the code motion part. So, after code motion we would get a program in this form this is more efficient obviously, because these two statements execute only once and they do not execute as many times as the loop does, but moving you know detecting invariant code has a many steps and similarly code motion should satisfy many conditions before the code can be moved out. So, in the case of loop invariant code detection the algorithm is quite simple. So, let me explain the algorithm with this example before we go to the text of the algorithm to begin with in initially when the algorithm starts. We mark the statements which have some x equal to you know some constant type of a computation or x equal to some value and that value variable and that variable actually has a reaching definition only outside the loop. In both these cases the statement is not going to alter its value during the iterations of the loop. So, therefore, such statements as such as this you know either assigned a constant value or assigned some expression whose operands have reaching definitions strictly outside the loop. In both these cases we mark them as loop invariant in the first step. So, once such statements are marked as loop invariant for example, here t 3 equal to address a in the second iteration of the algorithm we would mark other statements which are dependent on such loop invariant statements. For example, here t 4 equal to t 3 minus 4 involves t 3 and the statement corresponding to t 3 has already been marked as loop invariant the other operand is a constant. It is possible that instead of a constant here we could have another operand which is also marked as loop invariant or this operand could have its reaching definitions outside the loop. So, such dependent statements are marked as loop invariant in the second iteration. The third iteration considers the statements which were marked invariant in the previous iteration and this process continues until we cannot mark any more statements as loop invariant. So, that is what is stated in the formal version of this algorithm here. Mark as invariant those statements whose operands are all either constant or have all the reaching definitions outside L. So, this is the first step and then we have a loop now mark as invariant all those statements not previously. So, marked all of whose operands are constants or have all the reaching definitions outside L or have exactly one reaching definition and that definition is a statement in L marked as invariant. So, this is the dependence part which I explained. So, this loop goes on until no new statements are marked as invariant. So, this is the detection of loop invariant computation, but just detecting computations as loop invariant does not take us anywhere you know. So, it does not actually improve the code we should be able to move the code outside the loop. So, to do that we have a couple of statement conditions to check. The algorithm is simple first of all find loop invariant statements and then for each statement is defining x found in step one check these three conditions and then we will come to the details of these conditions very soon. Move each statement as found in step one and satisfying the conditions of step two to a newly created pre header just before the loop. The only requirement here is provided any operands of s that are defined in the loop L have previously had the definition statements moved to the pre header. So, in other words if you are moving a statement s the this statement would have its operands probably defined within the loop L. So, if so we have to move those statements which supply operands to the statement s you know they must be moved to the pre header earlier than the statement s. In other words we should maintain the order in which these statements execute. Now, coming to the conditions that the statement s must satisfy the first condition is s is in a block that dominates all exits of L. The second condition is x is not defined elsewhere in L and the third condition is all uses of L of x can only be reached by the definition of x in s. So, I am going to show you you know examples where violation of any one of these conditions can lead to incorrect code motion. So, it is possible to you know show that these are all requirements for code motion and that is actually that proof is available in literature, but we are not going to discuss the proof here I am going to give you examples. So, condition 2 a states that s dominates all exits of L. So, let us take the program which is here. So, in this program the block b 3 has been highlighted and specially the statement i equal to 2 is what we are targeting. So, i equal to 2 is a statement which can be marked as loop invariant quite easily because it has only constant operands. So, once having done that can we move this statement to outside the loop. So, at to this point create a pre header and put it in that pre header can we do that. The answer is no because condition 2 a which states that s dominates all exits of L is violated here. So, for example, if you consider b 3 then it is in this particular loop which consists of u b 3 and b 4, b 4 is the exact for the loop and b 3 definitely dominate look at all the entry paths from the starting point b to b 4. So, we can actually go through the path b 1 b 2 b 4 without going through b 3 therefore, b 3 does not dominate b 4. So, this is a violation of condition 2 a let us see what happens if we still move the statement i equal to 2 to a pre header just outside the loop. So, the statement will be immediately after i equal to 1. So, in this case because i equal to 2 will be immediately after i equal to 1 i will get the value permanently as 2 this i equal to 1 can never be achieved in practice. So, this goes here. So, i equal to 2 will be executed immediately after i equal to 1. So, i will get the value permanently as 2. So, in such a case once we go to j equal to b 2 whereas, yes once we go to j equal to b 2 whereas, in the case we are going to go to it is possible to take this path directly and in that case j will have the value 1. So, this is a you know clear violation of the semantics of the program. The program does not you know behave as it used to after code motion therefore, the code motion is illegal. So, now, so this is what I implied here is i equal to 1 we have mode i equal to 2. So, this program is illegal. So, let us look at the running example of bubble sort let us see if there was any possibility of code motion. So, j equal to 0 is obviously, a loop invariant computation that is very clear it is inside this loop right and it has only constant operand. Now, can we move j equal to 0 to the pre header just after b 1 outside the loop. So, now, the condition b 3 you know condition that b 3 which is this particular basic block dominate the exits of l which is b 9 is violated. So, this particular basic block does not dominate b 9 that is easy to see because from here you can go out directly to b 9 without going through b 3. And as is very clear the intuitive understanding of our bubble sort program tells us that j a loop is inside the i loop and j will be initialized to 0 every time. So, if we move j equal to 0 outside the loop this initialization will not have will not happen in every iteration of i and therefore, it will be the program will not run correctly. So, that is an intuitive understanding that is obviously correct. So, the second condition is condition to b x is not defined elsewhere in l. So, consider this modified program we have b 2 in which we have i equal to 3. So, i equal to 2 was here now we are not considering b 3, but we are considering b 2 which has i equal to 3 right. Now is condition 2 a satisfied s dominates all exits of l. So, in this case b 2 definitely you know satisfies this condition because b 2 dominates b 4. So, all paths from b 1 must go through b 2 in order to reach b 4. So, that is very easy then can we now move i equal to 3 to a pre header here. So, it will be after i equal to 1 again if we do that then the semantics of the program will not be correct. So, let us see why. So, if the loop is executed twice that is we start here let us do this with i equal to 3 in this place itself.  So, it is possible that i gets the value 2 and then goes out or after a couple of iterations again you know we could get i equal to 3 and then go out. So, in this case j can possibly get the value 2 and sometimes it can get value 3, but suppose we you know move this computation outside the loop right. Suppose i equal to 3 is moved to this point. So, i equal to 3 will not be executed in every iteration of the loop now it will be executed on entry to the loop. So, i equal to 1 and then i equal to 3 that is it. Now, if we take the path this path all the time then the j can definitely get the value 3, but suppose this loop was executed once and then we had taken this path then i would get the value 2 and i can never get the value 3 again because i equal to 3 has been moved outside. So, the value of j here will be always 2 even if we have traverse this path just once you know if we traverse it once then j becomes 2 and can never become 3 whereas, in this original loop even if we had traverse this path then i would have got initialized to the on entry to the loop again. So, in the next iteration we would have initialized i to 3 and there was a chance for j to get value 3 if this path was taken. So, the semantics of the program have changed and therefore, the transformation of moving i equal to 3 to the block just outside the loop is incorrect. So, what happens in our running example in the running example in this case we had j equal to 0 here the semantics will not change if we move j equal to 0 here because this is still within the loop. So, we could have actually moved j equal to 0 to this place. So, like this now this b 2 definitely dominates b 9. So, condition 2 a is satisfied, but j is defined in b 7 also. So, this is a violation of condition 2 b. So, we have defined j here and we have defined j here in the previous example we had defined i here and we had defined i here also there were two definitions of i and that was a violation of condition 2 b. Here also we have a definition of j here and definition of j here and this you know j plus 1 which is here can be reached by this j equal to 0 and it can also be reached by this j equal to t 6. So, because of this the value of j plus 1 can be quite different whether we get when we get j equal to 0 or the other one. So, when violation happens and the semantics of the program obviously will not be correct here also condition 2 c states that all uses of x in L can only be reached by the definition of x in S. So, again let us consider this program with a slight modification i equal to 2 is a requirement in the block b 4. Now, the we really have k equal to i in the block b 6 this i here gets its value from this i one possibility it can also get this value through an iteration of the loop 2 second possibility. So, there are two definitions which reach the usage of i in block b 6. So, that means the condition 2 c has been violated which says all uses in x of x in L can only be reached by the definition of x in S. So, correctly you know if you wanted to move this code to some other place only this statement should have supplied its value to i here, but we now have this and this both of them supplying value to i. So, we cannot move this code i equal to 2 to the player just after what we do we move the code irrespective of this condition. So, then again i gets the value 2 here and k will always get the value 2 it cannot get the value 1 at all. So, this changes the semantics of the program and therefore code movement in this case is incorrect. Again in the running example we have you know b 2 dominates b 9 and j plus 1, but j plus 1 in b 5 is reached by j equal to 0 and j equal to t 6. So, because of this the condition 2 c is violated and we cannot move this code to outside the loop. So, that is about the loop you know machine independentization on the static single assignment. So, the lecture consists of the following parts we will discuss the static single assignment form its definition with a few examples and we are going to discuss some of the optimizations with the SSA forms such as dead code elimination, simple constant propagation, copy propagation and the most important of them all conditional constant propagation and constant folding. This last optimization is said to be very effective with static single assignment form as compared to the non SSA form that is a control flow graph. What is a static single assignment form? This is a new intermediate representation and it incorporates diffuse information. So, in other words the definition is actually incorporated into this new static single assignment. So, a very variable has exactly one definition in the program text. So, that is why this is called as a static single assignment form, but I must hasn't to add that this does not mean that there are no loops. The program definitely can have loops without loops you cannot write meaningful programs anyway. The static assignment should be highlighted. So, this is a static single assignment form and not a dynamic single assignment form. In other words we are making sure that in the program text as it is given exactly one assignment to each variable exists. It does not dynamic means in the loop the statement would be you know assigned other variable will be assigned values again and again. So, this dynamic assignment is definitely permitted multiple assignments are permitted, but what we mean is in the program text that is static text a single assignment will is to be asserted. So, loops are permitted, but within the loop again the text must not have more than one assignment to the variable. So, optimizations perform much better on the static single assignment forms. The most important of them all is the conditional constant propagation and other one is the global value numbering. These two are faster and more effective on the static single assignment forms. SSI is a sparse intermediate representation. So, what do you mean by sparse? If a variable n variable has n uses and m definitions then the diffuse chains require space and time proportional to n dot m. Whereas, the corresponding instructions of users and definitions are only n plus m in number right. So, there are n uses and m definitions. So, if you just add up it is n plus m SSI form for most realistic programs is linear in the size of the original program. So, this is called as a sparse intermediate representation. So, more linear in the size of the original program. Let me give you an example. This is a fairly simple example. Here is the program text. So, what we have done here is show you the program in non SSI form and the flow graph in SSI form. So, this is a simple max computation read a b c if a greater than b then if a greater than c max is a obvious otherwise max is c. Now, if b greater than c then max equal to b otherwise max equal to c. So, print max. So, the flow graph faithfully says read a b c then it checks a greater than b if true it checks a greater than c if false it checks b greater than c. So, so far there is no change in the flow graph corresponding and the corresponding program in non SSI form. The change now happens now. So, we have the same variable max in all four cases as in the static single assignment form we are not permitted to use the same variable again and again for assignment. So, we would have max 1 equal to a here you know max 2 equal to c here max 3 equal to b here and max 4 equal to c here. So, there are four assignments and each of them uses a different max variable. If we do that the we run into a problem at this point we are supposed to print the value of max and there are four values of max. So, which one of these max values should be print. So, this is a common problem at a join we are supposed to have a single value of the max variable to get that the static single assignment form introduces a merge or join operator called as phi. So, this merge operator takes as many operands or parameters as the number of incoming arcs. So, we have max 1 and max 4. So, we have four of four parameters here. So, there are four different values which are possible along the four different incoming arcs. So, it has four parameters. The cement and it is written as max 5 equal to because again we cannot reuse any of these names. So, we create a new name and make it max 5 and what is printed here is max The semantics of the merge operator states that the value of the operand or the parameter which is relevant or picked up is the one corresponding to the flow of control. So, if the flow of control actually happens via this path we actually enter this basic block via this basic block then we would have taken this edge to enter it. Then this is the first edge this is the second edge this is the third edge and this is the fourth edge. So, if the entry happens via edge 1 then parameter 1 will be taken as the value if it is through edge 2 then the second one if it is edge 3 the third one and if it is edge 4 then the fourth one. So, that would be the value of phi. So, this is the semantics of phi statement. Obviously, this phi does not have any physical machine instruction corresponding to it in any machine. So, we usually we are required to translate it to you know copy instructions and so on and so forth. So, but that would be done at the time of machine code generation. So, we are not going to worry about it during the optimization phase. So, let us define the SSA form now that we have seen an example a program is in SSA form if each use of a variable is reached exactly by one definition. So, this is the static reflation part flow of control remains the same as in the non SSA part a special merge operator phi is used for selection of values in joint nodes. I already explained this not every joint node requires a phi operator for every variable well be no need for a phi operator if the same definition of the variable reaches the joint node along all incoming edges. Even in the previous example we do not have you know this is the joint node we do not have any merge operators for a b and c because it is not required. The value of a b and c do not change along any path therefore, there is no need for a b and c to have merge operators at this point. So, this is what it says no need for a phi operator if the same definition of the variable reaches the joint node along all incoming edges often an SSA form is augmented with U D and G U D U chains to facilitate design of faster algorithms we will see this later. Translation from SSA to machine code introduces copy operations which may introduce some inefficiency, but hopefully good register location takes care of this inefficiency. So, now let us discuss another example of the SSA form. So, this is the program in non SSA form or the flow graph in non SSA form and this is the program in SSA form. So, we have only two variables in this program i and n. So, i is assigned a value and n is actually read from input. So, that is as good as an assignment and then we compare n with 1 if it is true then we check whether n is even then again if it is true then we have n equal to n by 2 if it is false we have n equal to 3 star n plus 1 both of them join here we increment i and go back. So, if this was false then we would have if n not equal to 1 we would have if this was false then we would have come here print i and you know gone ahead stop. So, let us see how this can be you know how the SSA form reads. So, we have i equal to 0 here and then we also have i equal to i plus 1. So, we have two assignments to i therefore, we require more than one i variable. So, we have i 1 equal to 0 at this point then we have read n. So, we have read n 1. So, that is the first variable for n there are many assignments to n again. Now, this is a join point right at this point we have a join. So, there is a value of i which flows along this arc and there is a value of i which flows along this arc. So, obviously these two values can be quite different and therefore, we have a phi variable here we have a phi operator here the value of i let us say is i 3 at this point that is one which flows along this direction and the value of i which comes along this arc is i 1. So, we have a selection between i 3 and i 1. Obviously, the variable i for i which is going to collect the value from the phi operator is also an assignment and that requires a different instance of i. So, here is where we have i 2. So, we have i 1 and then i 2 which just collects the value from the phi operator and then we have i 3 which is the assignment in this block b 7. So, similarly so, that takes care of i 2 rather i. So, remember even though there are only two assignments to i it does not mean we require only two different instances of i. If we had just made this i 1 and this as i 2 then you know getting the appropriate value of i here through the phi statement would have made this i 3 instead of i 2 that is all. So, that is nothing but just a you know naming convention and nothing more than that the naming or renaming algorithm takes care of all such minor problems. Then you know there is a value of n which comes in here and a value of n which comes in because of these as well. So, assuming that we have a value you know of n which is coming in this direction as n 3 and the value which comes along this direction as n 4. We require a phi operator here to supply the value to this particular node. So, that would be called as n 5 equal to phi of n 3 comma n 4. So, depending on the entry either this or this one of these will be picked up that will be called as n 5 and supply to this particular join node. So, if the entry is via this arc then we pick up n 5 and if the entry is via this arc then we pick up n 1. So, that is given the variable name n 2. So, n 2 is compared here instead of n not equal to 1 n 2 is compared here then we check whether n 2 is even and then because there is an assignment to n we introduce a new variable n 3. So, that gets the value n 3 equal to n 2 by 2 and here we have to introduce a fourth variable n 4 which is 3 star n 2 plus 1 and because of these two different variables joining at this point we require a phi operator here which picks up one of these values and supplies it to this node. So, even though we had 1 then 2 and 3 assignments to n we have introduced really you know this is n 1 here is n 2 then we have n 3 n 4 and n 5. So, 5 instances of the variable n have been introduced even though the original had only 3 assignments to n. So, the rules for introducing the phi operators and new assignments is a bit complicated we are not going to discuss the construction of the SSA form which takes care of such difficulties. Let us look at one more example. So, this is actually a straight forward program in which we have L S R, R S R and S R as the main variables then there is a t equal to S R star S R.  So, do not bother about the meaning of the program it really does not do anything meaningful it has been constructed just to show the SSA version. So, here is a you know L S R computation.   So, we have S R version also coming in here. So, for that we have new variables for L S R R S R and S R which are actually the collecting variables for the phi operators then we compute t. So, then we go on to check t against A we have new instances of R S R L S R and S R generated here and once we do that you know we again require a phi function here this requires a phi function because there is a version of L S R coming here which is the old one and then a new value of L S R comes here and another new value of L S R comes here. So, there are three different values of L S R coming in through these three paths. So, we require a phi operator with three operands the same is true for R S R and of course, S R is computed here. So, that is a new variable as well. So, this is the way the SSA form appears it has a phi operators whenever we need to pick a corresponding value you know with each entry point. So, now let us discuss the optimization algorithms the first one is dead code elimination which is very simple. The reason why it becomes simpler than before is that there is exactly one definition reaching each use by the way let me show you that here. So, in this new version SSA version this definition n 3 equal to n 2 by 2 reaches this use. So, that is the only thing and then we have this n 3. So, again that is corresponding to this definition. So, we do not have more than one definition reaching any use. So, this is reached by this and then the n 1 is reached by this and the n 2 is a new definition which will reach all these uses this and this. So, exactly one definition reaches every use. So, because there is only one definition reaching use use we examine the d u chain of each variable to see if it is used list is empty. If there is no use list then obviously, the code is dead remove such variables and their definition statements. And if a statement such as x equal to y plus z is deleted we must take care to remove the deleted statement from the d u chains of y and z as well. So, obviously if this goes away this y and this z will not be valid uses anymore. So, we must remove the quadruple numbers of these statements from the definition of y and z the same is true for the 5 statement as well. So, let us consider the simple copy constant propagation copy propagation and then conditional constant propagation global value numbering is a bit more complicated. So, we are going to skip that simple constant propagation is really simple it is actually a simplified form of the constant propagation we studied with control flow graphs. So, we form the statement pile as before s is a statement in the program. And while the statement pile is not empty we execute the loop we remove a statement from the pile and if s is of the form x equal to phi of c comma c comma c comma c for some constant c. Then we can replace this statement by x equal to c that is very obvious and now if the statement is of the form x equal to c either obtained by this simplification or otherwise for some constant c. Then we delete s from the program because we do not have to perform any dead code elimination we will see why for all statements t in the d u chain of x we substitute c for x in t. So, obviously the check that we did in the control flow graph whether the you know whether there is more than one definition reaching x that need not be this use of x need not be done here exactly one definition reaches. So, we can simply substitute c for x in t and we simplify t. So, we can definitely do this for all these statements in d u chain and once we do that this x equal to c becomes redundant therefore, we can do that elimination right here we could not have done that in the control flow graph. Now, we add t to the statement pile and we go back. So, this is a very simple constant propagation copy propagation is very similar to constant propagation a single argument phi function x equal to phi y or a copy statement x equal to y can be deleted and y substituted for every use of x. We do not have to check anything here because exactly one definition reaches the use of x that is this definition reaches the use of x here and no other definition can reach that point. So, copy propagation is very simple here let us now consider conditional constant propagation static single assignment form with extra adjust corresponding to the definition use information are used here. So, this is the augmented version of the s s a form edge from every definition to each of its uses in the s s a form hence forth we call these edges as s s a edges these are added to the s s a form. It uses both the flow graph and the s s a edges flow graph edge and the s s a edge and it maintains two different queues are work less. So, one of them it does not mix up the two kinds of edges one of them is called the flow pile which stores the flow graph edges and the other one is called the s s a pile which stores the s s a edges. So, flow graph edges are used to keep track of reachable code. So, there so flow graph edges indicate you know the flow of control. So, we are going to use that to keep track of reachable code. So, if we cannot reach some code using a flow graph edge as we will see in the example then you know this is unreachable code and it can be eliminated. Then what is the purpose of s s a edge s s a edge is useful in the propagation of values. So, what happens is it is cumbersome to traverse the control flow graph every time just to check the changes which happen in a basic block because of a definition change. Such you know changes can be easily propagated using the s s a edge. So, we do not have to traverse the whole control flow graph to come to a particular basic block. We can directly go to that basic block and look at the changes that have happened there. So, the algorithm actually becomes much faster because of the s s a edges. If we had used only flow graph edges we could still have performed constant propagation, but now with s s a edges the program works much faster the constant propagation program becomes much faster. Flow graph edges are added to the flow pile whenever a branch node is symbolically executed. So, or whenever an assignment node has a single successor. So, when we execute a flow graph you know a branch node we may take the true edge or the false edge in case the condition actually evaluates to true or false. If it the value is not known then we have to actually add both the edges to the flow pile. Whenever an assignment node is executed and it has a obviously a single successor then that edge is added to the flow graph pile flow pile because the successor node of the assignment node is the one which would be executed after the assignment. s s a nodes coming out of a node edges rather coming out of a node are added to the s s a pile whenever there is a change in the value of the assigned variable at the node. So, this becomes very clear as we go along. So, if there is a definition and the variable associated with the definition changes its value then the s s a edge corresponding to that node will be added to the s s a pile. This ensures that all uses of a definition are processed whenever a definition changes its lattice value. So, the lattice value that I am you know referring to here is the abstract lattice semi lattice value that we had discussed before that is the top or the constant value or the bottom. So, the same lattice is used by the conditional constant propagation as well. This algorithm requires much lesser storage compared to the non s s a counter part and conditional expressions at branch nodes are evaluated and depending on the value either one of the outgoing edges corresponding true or false or both edges are added to the flow pile work list. However, at any joint node the meet operation considers only those predecessors which are marked as executable. So, this is very important if the if a particular node cannot be reached via a predecessors which is you know which is indicated by the corresponding incoming edge being not marked as executable then we do not have to bother about that incoming node at all. So, here is the first example. So, we have start then a equal to 10 b equal to 20 we compare b with 20 if it is true we assign a to 30 if it is false we go straight. So, either way we come here we assign d equal to a. So, d can take the value either 30 or 10 then we stop, but if you look at it more carefully because b is a constant the check b equal to 20 actually happens to be true. So, this no part will never be executed. So, we actually go here a is always 30. So, we can assign the value of d as 30 and then stop the s s a form is this. So, we have a 1 equal to 10 b need not be renamed because there is only one version of b then b equal to 20 is checked. So, we have another version of a here. So, a 2 equal to 30 and since we have two incoming works we have a 5 with a 2 and a 1 and that is assigned a 3 now we have d equal to a 3. So, these dashed edges are the s s a edges. So, here we have b equal to 20. So, there is a change in the value of b. So, it is propagating to the next use of b. So, that is only this node here we have a 1 equal to 10. So, that value is used here. So, it is actually there is an edge to this node here we have d equal to a 3. So, this is value is defined here. So, the edge actually links to this node etcetera. Similarly, this a 2 is 30. So, it is linked to this node because a 2 is used here. So, these are the definition use edges or the s s a edges. So, example this let us look at the trace of this example. So, we start here execute. So, this edge goes on to the flow pile and then when we look at that edge we take this node and interpret a 1. So, that becomes a 1 equal to 10. So, the constant value is retained then you know it has a single successor. So, this edge will be added to the flow pile. So, we traverse this edge come to this node. So, b equal to 20 will be added to the flow pile in the meanwhile this s s a edge is added to the s s a pile. So, we come to this stage where we pick up this node execute it. So, b is treated as a constant it is value is stored. So, this edge is now added to the flow pile right. So, that brings us to this node now because of b equal to 20 this will be added to the s s a pile. So, b equal to 20 is compared right. So, since the value of b is known to be a constant we can evaluate this constant as this expression as true. So, this becomes true and therefore, we need to add only the true edge to the flow pile and the no edge false edge need not be added to the flow pile. So, in this case we have this definition a 2 equal to 30 which is stored. So, a 2 is now taken as a constant. So, then that activates this edge and we go to this node. In this node we have a 3 equal to 5 of a 2 because we consider only those incoming edges which are marked as executable. So, only this edge is marked as executable this edge is not marked as executable. So, we consider only this particular predecessor in 5 there is only one predecessor. So, value of a 2 is what is given to a 3. So, it can be actually evaluated as a statement a 3 equal to 30 directly. So, now we mark this edge as executable because this is the only outgoing edge from this node. So, we go to this particular node this has the value rather the statement d equal to a 3. Now, a 3 can be determined as a constant from the previous interpretation. So, that would be assigned to d. So, after all this we have the structure where a 1 equal to 10 b equal to 20 this is a true this is a 2 equal to 30 a 3 equal to 30 then d equal to 30. In this particular example the SSC I just have no use because the we have come to the end of the graph. So, flow graph adjust rather the SSC I just become useful only later. So, now we can now perform a few more optimizations on this. For example, we have a 1 equal to 10 here and then we have a 2 equal to 30 here both of which have no influence at all on d. So, this is really dead code. So, a 3 equal to 30 is the only one which is relevant to us. So, d equal to 30 again. So, if a 3 is not used later on we can actually delete a 1 then a 2 and a 3 all these we can we need to retain only the. Similarly, if b is not used then this node can also be deleted the true node has no value now. So, we really have only d equal to 30 from now on if none of them other variables are used otherwise we would have b equal to 20 as 1 statement and then a 3 equal to 30 as another statement and finally, d equal to 30 as the third statement. So, we would have these values these are the only nodes which are relevant in this particular example. This example I am going to explain the example and then we will discuss the details in the next part of the lecture. So, here we have a loop as well. So, this is the loop structure and we have many merge functions one for b 2 here another for c 2 here and then we have one for b 4 here another for c 4. So, in this example there are going to be s s a edges which are going to be useful to make the flow of value to the various basic blocks quite visible and make the processing much faster. So, we will consider this in detail in the next part of the lecture. So, we will stop here. Thank you.


The International Physical Activity Questionnaire, short form, IPA-QSF, has been recommended as a cost-effective method to assess physical activity, but several studies validating it have shown differing results. A systematic review was conducted to analyze these studies and found that the correlation between the IPA-QSF and objective measures of activity or fitness in most studies was lower than the acceptable standard. Additionally, the IPA-QSF typically overestimated physical activity as measured by objective criterion by an average of 84%. Therefore, the evidence to support the use of the IPA-QSF as an indicator of relative or absolute physical activity is weak. This article was authored by Stuart Sunita M, Lanth, McFarlane Duncan J, and others.


The appeal court sitting in Portia Court has ordered leading entertainment company Multi-Choice to sub-line some sub-channels to Metro Digital, pursuant to the Nigerian Broadcasting Commission's Court. Henness Judgments, Justice Olabo de Adigbeinde, wrote that the law court erred when it dismissed the suit of the appellant, that is Metro Digital, when the appellant proved the existence of the dispute between itself and Multi-Choice. Justice Adigbeinde also urged the NBC to compel Multi-Choice to follow the court order within 21 days.


Thank you so much and welcome, everyone. Thank you to E4M for giving us this opportunity to discuss the future of programmatic and the transformation we have seen so far and the transformation we can expect in future as well. So before we begin, can we have a very quick round of introductions, you know, your priorities in terms of, you know, programmatic and, you know, your exposure to programmatic so that everyone understands the group that we are speaking with. Hi everyone, I'm Tisha. I manage Digital ND2C for Kerasthas India, which is a part of the L'Oreal group. I have been in the digital space for about 10 years. So my journey with programmatic started before programmatic when we used to do data collection on Excel sheets and it's been a long journey from there and of course all our priorities now are around data collection and how do we best optimize that. So that's what I'm looking forward to discussing with all of you today. Hi, I'm Varda. I run the ads business for BigBasket and I'm also in charge of customer engagement. As far as programmatic goes, I've seen through sort of three phases in the last eight years. The first was when we opened up more and more sort of segments of data. The second phase where I think creatives became a little more sort of dynamic. The third phase, which as yet I think there are different versions going around with generative AI, with dynamic creatives and sort of contextualized ads where you're able to talk to someone as though you're holding a real face-to-face conversation. So my sense is we are in for a very exciting sort of disruption when it comes to programmatic. I just don't know which way it's going to be.  You can choose the ones that you like. Hi, good morning everyone. I'm Ritika. I work with Dr. Eddies. I have been in the digital marketing space for about 19 years now. So yes, I understand the fundamentals of programmatic and then I've been thrown into various use case scenarios of programmatic. For me, it's been really, you know, how it fits into the consumer journey. And more importantly, and how am I able to kind of see it in a single funnel? Have I really achieved that? No. But I'm hoping to learn from this panel and probably, you know, discuss with you what my learnings are. Hi, good morning everyone. I'm Swami Patnaik. I'm heading the marketing in BlinkX and in the digital space for almost 18 years now. To me, the programmatic has been like as everybody has said already that there has been quite a bit of shift happened in programmatic over the years of last 8 or 10 years, which we have all transformed and have gone through. I think down the line, the AI will play a very significant role in programmatic also, like all of her life, right? I would like to explore more about it and talk on those fronts to you guys. Looking forward for an excellent session. Thank you. Hi everyone. I'm Lalacha Endu. I'm CEO of Performance India. We are a digital native agency with DNA in performance marketing. And due to that programmatic plays a very critical role in our portfolio. And frankly, my personal view of programmatic is just the best matters of media and technology. This is how actually digital should work. I'm quite excited about this topic and looking forward to this conversation. Hi Deepak Sharma. Unlike probably the others on the stage, I'm not a marketing marketing guy, but I do marketing as from the digital lens. Pretty much like what Lalacha Endu said. I do run digital assets for the firm, including whatever financial products gets discovered, but more importantly from technology lens. And I do see there are still lot many problems we haven't solved while we talk about it. But I think there's one universal problem that we are all grappling with finding the right customer at the lowest unit cost. And ensure that there is an ROI which can remain undisputed in the organization as to how this gets delivered. I think that's irrespective of industry. That's something universal. I think the second thing that we are grappling with is largely what I call internally the aim. A large part of A which is awareness is getting solved. But the intent and the motivation to buy and convert that into finally the end product is where still we have a lot of ground to cover. So hopefully we will talk about that. Hi, my name is Priya Bhatia and I'm heading business development for OpenX, which is an SSP platform and I'm based in Singapore. I've just been added to this panel. Thanks, guys, for having me. So we're right in the middle of programmatic. You know, an SSP platform is the one that connects publisher premium inventory to the buy side platforms which are the DSPs. And that enables an advertiser to buy advertising on the programmatic channels. It could be any of the omnichannels like it could be CTV or it could be mobile web or mobile apps in real time targeting the right audience. So I think the entire premise of programmatic was to target the right audience, you know, at the right time. And then that's something that, you know, it gets kind of lost when people start to target through programmatic and buy through this medium. So we'll discuss more on that. Thank you so much, everyone. So there you have it, guys. We have the perfect panel here to discuss where programmatic is headed. So let's start off with the very first thought that I had in my mind. Programmatic has seen a lot of journey through the ages. But then what is programmatic, what is programmatic's journey to you? How have you tapped into programmatic? How have you evolved programmatic within your organizations is what I wanted to understand. So can we start with Priya? So, I mean, we've been waiting for the day programmatic will really be evolved and kind of adopted. And that's the case in some of the more mature markets. When you look at the U.S., EMEA, like a lot of the budgets go towards programmatic. And that's not happening in the same way in the APAC region, I would say. And I'm talking about India and other Southeast Asia markets. There's still a gap because of the understanding. So I think what needs to evolve is everybody needs to understand how programmatic can be used in the most efficient way. Where you're achieving your objectives as a marketer in the best possible way. So that journey needs to happen where the understanding of programmatic, how it's used to its best potential can be discovered by marketers. Thank you so much. That's perfect, actually. Deepak, if you could just take the mic. Because what you just mentioned earlier, that you know, at the end of the day, It's ROI that we are looking out for, right? That's what marketing is all about. So if you could just tie that in together with the ROI conversation you were saying. Yeah. I think we are seeing a transition, Especially as organizations are investing massively on the CDP.  So I think the CDP part largely is now sorted as I would say for most organizations Who are ahead of the curve, especially if they are dealing with Large consumer segments. Still for business segment, that has not been done. So let me take qualifiers. The consumer is okay if you are Still targeting small businesses or medium-sized enterprise, Difficult problem to solve. So I think that we have solved for. I think what we are also seeing increasingly is while there Are challenges that we see on frauds, on programmatic, and We will talk probably in the next sector. But I think there is a fair amount of learning that is coming in as to What kind of click frauds and stuff like that you get to see. So thereby, I think the third we are also realizing that it's no more About looking at only a cost of a display or a cost of a lead. But it's also about where you want your brand to be and where You don't want your brand to be visible. So I think ability to, because you don't want your brand to Probably be on some side that is probably repetitionally not From the person of the brand is not the right place to be. So i think some of those real-time data as to how Programmatic is working beyond just the matrix of roi is Another area that we are seeing. So organization i think is now Realizing it's a 360-degree marketing and it's not just About buying media through programmatic but understanding The customer, the media, the content, building all your Brands, getting the real-time data of what customers are seeing Where and i think this is the journey. I would still say we have a long way to go from where we are But we have made reasonable progress. Thank you so much. Nice. So yes, now that you know, we have understood that. Yes, please. You raised a point that it's a journey, right? And if i reflect on the journey, i see in programmatic There are three innovations which has happened which is making Programmatic much more effective, right? Number one, if you look, the inventory has increased. Now you see you can do ctv, you can do direct digital out Of home, everything is bundled, right? Earlier it was just website and we were just doing some fancy Thing there. So there is a lot more Areas you can reach through programmatic. Second, i would say is the contextual targeting because there Are a lot of third party data providers that have come. Epsilon is in the room somewhere here and we work with these Players also to identify the right audience to target. And lastly is the personalization aspect, right? All of us want and programmatic gives a very nice way to Do dynamic creative optimization, be it by weather, Be it by your audience type and so on and so forth. These, if i reflect in the last three, four years, makes Programmatic a lot more effective than what it used to be. But it challenges us, both of you kind of addresses that are Still attribution problems, fraud prevention, which i'm sure You're going to address in b. But as you nicely put, it's a journey but i see a lot more Positive steps forward when it comes to programmatic. Thank you. Yes. That's bang on target, actually. And i wanted to understand, you know, the journey that we have Seen and the journey that we are going to see. I wanted you to, if you could just summarize your thoughts On the digital transformation we are seeing. We have seen and we are seeing in programmatic. That's exactly what you have done, actually, as a matter Of fact. So if you could also shed some light on what else can we Look forward to in terms of, you know, the changes coming In the industry, what are we looking forward to? What can we expect? And what are the core areas of focus? Not only for performance as an organization, but then overall For the programmatic community. That would be great. So listen, you asked multiple topics. One used just on digital transmission, which i think Is a very broad word and often misused, right? If you ask deeper what is digital transmission, you Probably start with value. The tech build, data, probably a marketer like Good thing, you know, it starts with marketing, media and All that. So i'll not step into that conversation, but very simple Definition for us is how do we reach customers where they Are? As in if they are on a digital platform, how do i Effectively reach them? If they are visiting a mall, how do i effectively Catch them in my offline store, right? It's as simple as that. And we are talking about getting to customers who Are actually conversant with digital. In there i see there are multiple challenges. I've already said the positive steps. The world guidance by all these tech platforms is a Problem. I'll give an example. The data i get from google ecosystem, if i run it Against nilson dar, which is based on meta, numbers Don't match, right? And the viability score, the impressions, everything Come different. How do you reconcile with that? If i, as a user, if multiple tabs open on your browser, Everything counts as an impression, but practically You cannot see, right? Catch the impression in all the tabs. So all those are issues and fraud prevention and all Deepak has already spoken. So in short, right, whether we call it on the digital Transmission or a simple application of technology to Be really effective in our marketing, programmatic is The way forward, but there's a lot of things that need to be Addressed. Perfect. Thank you. Yes. So, you know, i completely agree with all those things That you just said. But the only thing i was thinking about in my head is When you ask this question, what is programmatic? I came very mentally prepared to say that programmatic Is anything that we are buying with biddable media, cpc, cpm That is what programmatic is. In fact, i made a conversation to priya saying that only 20, 25 Percent of india is using programmatic. But now i'm thinking, i'm hearing these gentlemen talk And technically why are we assuming that google and Facebook are not programmatic, right? Technically they do real time bidding. We do play on bids. We play on targeting as much as possible. The ecosystem is changing. Google is probably going to take off its audience data. But the fact is that those are programmatic channels as well. What we need to be really sharp about and push back on the Marketing fork is the fact that give us a very specific tg Who you think is relevant. I will find that for you because there are enough data Partners today kind of, you know, opening it up for us. And be specific and sharp in terms of what is that consumer Journey that you want that specific tg to go through. So i think that is the real transformation that we have seen. You know, like, right only from saying like, you know, there Was this lovely meme, steep jobs in somebody else, you know, Demographic wise, i want to say it was michael jordan or Somebody in the sports community. Demographically they kind of fit so well. But behaviorally and any other attribute they did not match at all. So it's exactly that transformation that we have seen from Moving into just media planning which possibly the tv generation Has kind of, you know, pushed us to and now going a lot more Sharper with our tg and then finding a lot more. That's the transformation i feel thanks to programmatic which has happened. Thank you. So samya, what are your thoughts?  And just adding on to what lalatendu said and what lethika said. You know, first of all, it's absolutely true. It's not only the wall gardens. It's not, you know, we don't talk about the medium because Programmatic is not a medium. It's a concept. It's the idea of buying ads programmatically telling the system that this is the target audience that i am buying for. And facebook, whether it be facebook, whether it be any digital Marketing, you know, platform within the ecosystem, at some point it follows the same principles. So that is why programmatic is a concept and it's not really a medium. So keeping that in mind, the transformation that you want to see in Future, apart from what lalatendu and lethika have mentioned. Yeah, i think many points already covered by all of the fellow panelists. So i think one of the interesting point you have just covered is So Google and Facebook, the way Meta, Google and Meta, the way they are operating, right? The kind of platforms and kind of channels they are providing. I think they are going to a direction of programmatic eventually, right? I mean, if you see the kind of new advertising channels and everything they are bringing in, They do tend to go into that direction in a big way. And if you see now it is like all of us know, right? I mean, targeting your goal, your assets plays a significant role in the overall Programmatic landscape, right? Those are the three, four important things which we have to make sure that this works perfectly. Okay, then only your programmatic works perfectly fine in terms of the way you are trying to Achieve your KPIs, right? Now, if you see in the recent times, right, the way ai has been used by Google and Facebook in all of their platforms, right? Whether a triple A campaign for Facebook or say app installation campaign for Google, right? So those are again pretty much programmatic only, but probably the limitation is in terms of the The asset they have, right? Google and Facebook that is limited to that piece of assets only. But in terms of if you go to other programmatic platform, right? They have much larger assets and everything. But in terms of our organization, we have been using programmatic in a significant way. And I think the data plays a very significant role in that. So in terms of touching the customer in the right point, right? Cdp, as Deepak just mentioned, right? Cdp plays a very significant role because we are able to capture all the Touchpoints user is doing in our assets. And that's the kind of personalization and communication you Can generate from those kind of data points you are gathering, right? So i think, yeah, programmatic is a journey which we all are going through. And, yeah, all ecosystem, i'm sure that that will help us to move into That journey in a positive direction. Thank you, samya. So we have actually, you know, i Personally have seen the journey of programmatic from very close Quarters. So i have seen the days when in In fact, one of my clients just the moment i entered into the meeting, he said, Programmatic is problematic. So from that, now i'm seeing it moving into The pragmatic zone rather than being, you know, problematic. So that journey, a lot of the points that were covered here by The members of the panel here are encompassed in that journey, Which is usage of data, reaching out to the core audience, Identifying what to do, what data are we using and how are we Tying it together with our marketing goals. So what are your thoughts on the measurement, the attribution Analytics in place for programmatic and what can we look forward to? I think that's a good question. I think i was going to sort of come to that. I think in my view, three things are sort of emerging as a Trend. I think i have precious little to sort of add to what Each of the folks over here said, you know, cdps, which is First party data, you know, think of it this way. You know, think of it like a sugarcane vendor, right? You know, the sugarcane juice vendor who started off, right? Someone came and said, hey, you know, when you start Maintaining a database of all the customers who speak Sugarcane juice from you, which is cdp, right? And then someone said, hey, why should you just squeeze Sugarcane alone, add some ginger and lime, right? Which is first party slash second party data. So instead of selling the sugarcane juice for 20, You could sell it for 30, right? You're getting a disproportionately better sort of ROI, right? And third came personalization, right? Why should i just sort of give you the capacitors?  I think the thing that we haven't quite gotten used to, right? Which i can sort of grapple with, because e-groceries is Probably one of the hardest segments to convert, right? And i suspect someone like tisha might relate to that as well. But once you convert, the customer sort of stays put, Sort of like an sip in a mutual fund for a long time, right? So i think one of the things that i think in programmatic We haven't sort of gotten around to is not just look at The end score card, right? Which is conversion, clicks, et cetera, et cetera. But how do i look at things like priming, right? Awareness creation, repeat engagement rates, and finally Action and then, you know, the outcome, right? Like, this would be the equivalent of you tracking, Let's say a player's journey saying, Is this fellow going to the gym? Is he getting up in the morning? Is he doing fitness training before you start tracking Runs? I think we've just gotten to a point where everyone is Getting so obsessed with the runs and the outcome. We're saying, you know, it doesn't matter if you swing For the fences, right? Or, you know, if you're a dodo, it doesn't matter As long as you hit a six, that's all matters, right? I think to me, simply because of the reason why I'm sort of insisting that has to happen, Where i guess people feel a lot more comfortable Spreading on a Google or a Facebook is you have A lot more sort of control over the, Control over visibility of the attribution that happens, The problem with programmatic, you know, is, Is that you're sort of buying stock from an unknown face, right? If anything, I can't run the same scorecard that I'm running While I'm buying from a known face, Which is Google or Facebook in this case. You have to give me a lot more comfort, right? Sort of like what Ola or Uber say, Hey, you know, this fellow is started, He's going to the retune three minutes, He's a four star rated driver, et cetera, et cetera, right? For example, for a starter, I always think when we run programmatic, Why don't we get like a scorecard or an NPS Of the quality of the publisher, Which is an all blended sort of scorecard That makes me allocate a lot more to him, right? If you're just going to tell me this is CPM Then this is available. I won't know whether the quality of that Is good enough for me, relevant for me, et cetera, et cetera And how has my own sort of inventory Performed in the past with him, right? Is there a better way for you to sort of At least give me a score? Yeah, I mean, whatever, an NPS equivalent Say this is what you should be doing. For example, there are so many nuances That are missing, right?  Whereas let's say, for example, a YouTube, I don't know what, do it yourself, salon channel I suspect will be a lot more of awareness So you'll have a larger funnel, A longer time of engagement, slash dwell time But not as good an outcome from a sales perspective, right? So how do you allocate money to each of this? I think these are questions I would imagine Have to get addressed. This becomes even more so relevant Because with generative AI, I think You're going to have a lot of these dynamic creatives So, you know, just the supply chain Of how many creatives you're going To want to test with And how do they look like to you At different points of time in your journey And hence, how do you respond to them Over a period of time just becomes a lot more complex So three things, I think, look at a longer time frame Look at the full funnel of engagement Not just the outcome, right? Three, what are sort of improvements in trust, right? That you can create for people to sort of Trust each other on both sides. Thank you so much, Varda. So, yes, brilliantly put, those are the three points And then, you know, Tisha, I wanted to check with you On while Varda has spoken about where we are And what is the ideal strategy to approach this challenge How are we working around these challenges And where are we right now as an industry? So your thoughts on that. Yeah, sure.  Because when I have a campaign, I'm delivering Across Spotify, across OTT, and there is Unlimited frequency happening. The same consumer could be seeing the ad, multiple channels You could be bombarding them, right? So the big thing programmatic does is put a frequency cap Where an ex-consumer is seeing an ad Only a certain number of times, and then at the end As a marketer, I can go back to my db360 And say, okay, this campaign drove these many Impressions and this much reach. And that is to some extent dedupt, right? So there is a big attribution problem which is already Kind of solved. Of course, there are a lot of conversations. Should we do last click attribution? Should you do seven day attribution, 15 day attribution window? All of those conversations will continue to happen. But to some level, I will say at least campaign tracking Has become more efficient. That's the number one thing. The number two thing is that as we have been Collecting first party data and PII, and you know Whether it is as simple as making a lookalike audience On metta, or it is uploading this audience on db360 And using this similar audience rather than affinity On in market audience, PII and 1p data is more Efficient. You would have seen that across Different industries. Now the question is how do You collect high quality data, right? So whether it is a company like laurel starting a d2c, Which is really the highest quality data where you Can segment consumers, you get so many insights about Them, and then of course how do you upload this Data and then use it across different different Segments. So that's the number two thing. And the number three thing is that more than being data Centric or anything, we are forever consumer centric. Right? So the question for us will ever remain that if I have a campaign, how do I make sure that my Add on a digital out of home versus a gaming platform Versus youtube are different and they are based on what The consumer needs at that time. So that's really the challenge that we are forever trying To solve as digital marketers. And of course, then of course We have brand safety concerns and there are lots of ways to Put pre-bid filters, post-bid filters and I'm sure we'll Discuss that in detail. But these are the three, four Things which are kind of going on right now. Thank you, Tisha. So touching upon brand safety Concerns, yes. So I remember that Deepak and Lalatendu already mentioned about the ideal way to buy Media while looking at these filters as well. So if you could just, Lalatendu, if you could just share Your thoughts on the brand safety, ad fraud and Viewability state of the industry and how, what kind Of work around should we be looking for? Of course, we Have our partners in place and then these partners Are doing the best that they can. Digital is never A hundred percent when it comes to brand safety. The entire digital and it's not only programmatic. But then your thoughts on what is the strategy we should Adopt towards ensuring that we are as close to that Hundred percent as possible. I'll just start with this. Look at this behavior If you really need it because I sometimes feel many People just do it out of FOMO. So first get that right. But if you really want to Do this, there are a few things you can do in available Technologies which is there. For example, take db 365 for that matter. The basic keyword, exclusion, The black listing of sites, making sure that your art Doesn't appear in our cancer page because it creates a Negative emotion. These are already there. It's a matter of awareness, right? Now, if you take the next level, right, and you Have, let's say, a post bid validation, like double Verify, even if something really passes through your filters And you want double verify to stop it at the last moment Of art appearing, those technologies are available also. Think of impilter it as a fraud prevention. So there are multiple technologies available. I'll just summarize this point is don't do this out of FOMO, first thing. Second, just be very Crisp as a business owner on why are we doing this and what's The roi as they really nicely set it. And once you have figured out where you want to play, just Be aware of all the options available. My read is there's quite a few options available there. And if somebody tells that it's very difficult to do Unprogrammatic, maybe they need a second opinion. Thank you. So, yeah, rithika, your thoughts on this? See, of course, one needs to be careful.  But even I feel like the best ad safety platforms which are Available today don't give us a hundred percent, you know, Assurance of nobody takes that guarantee. I don't know if there is anybody actually who takes that Guarantee because I haven't come across any, right. But that said, I mean, you get sharper at it. Like, so for example, all these keywords, we definitely try And block. I think with then you as an Advertiser need to be a little more sharper in terms of Where you want to, where you're okay to advertise and where you're not okay. Then play within an absolutely world environment. And if you have that risk taking ability, go ahead. 10, 15 percent is not going to hurt anybody. You know, well, we live with that, right? But yeah, there is nobody who is right now giving you a Hundred percent guarantee. So that's my thought. Thanks, rithika. So, Deepak, your thoughts on the Omni-Channel approach we should be taking because when we are talking about The journey of programmatic, the growth that we have seen, The first thing that comes to my mind is the multiple channels That have been added to it. Now we are talking about CTV, Native, audio and display, you know, display and video We're always a part of it. But then we have added audio Now with all of these conversations, which dish out of home coming into the picture Now, what strategy should we adopt and what should people look for When they talk about an Omni-Channel strategy using programmatic? I think great question because everybody is finally going after eyeballs, right? And it's the same consumer who is moving across medium, across devices At different points of the time. What you do on a weekend is very different Than what you do on a weekday. I remember there was a time when most Of the shopping sale used to happen on the weekends. Now it all moved to weekdays because we all realize that people Are better things to do on weekends than, you know, go and Figure out what to buy. And i think these are the kind Of things today we are seeing. And that's why the biggest Challenge today is about understanding customers' value Of time and how customers are spending that. During covid, when i'm looking from programmatic or otherwise, i think All of us had spent a lot of time in front of screens. Either people were doing zoom calls or watching content on OTT or they were doing fno transactions or probably Making searching for another job. But screens were primarily There because you had no other alternate activity outside home. So i think once things open, as we started to travel, be here in The meetings, eventually all our screen times have come down. So i think that, and when you start taking that as the Basis to say if i'm spending less time on the screen, and if My programmatic is irrespective of form factor, it's all around screens. How do you go back and relook at that? A classic example when we talk of ott as a medium, right? Netflix data shows that people are spending less and less time In front of ott. Last week i was in australia and I was surprised to see that. Just like in india, we had that 199 rupee package for buying netflix on mobile. Even in australia that was there. Even in a market with Probably a population that is so small because they are Struggling, it's not about people have access to larger form Factors or screens and devices. But it's about the time. And i think as people are spending less time finding a Right mix is equally important. And the second shift i'm seeing Is publishers are directly going and talking to the brands They don't look at intermediaries.  So i think everybody today, the Quality inventory is available and it's available directly if You are buying. So then comes the question of If i'm now using a program. If i know something works on a Particular channel for me at a particular time with Approven data and roi as to who's viewing it, what are The conversion. And as i start mapping a lot of That real data, i do see there will be a challenge even If i'm using a program. Because the biggest search For example we all know in us on products is not on google. It's on amazon. So similarly it's about dining. You want to go and dine somewhere. You don't go and search Anymore on google. So i think people are Increasingly going to find the discovery and consumption at The same place. And thereby the ability not To push an ad through programmatic becomes important But also your ability to convert those into the consumption And the output. That's why i was talking about roi And technology. Because the marketing function has To coexist with how the product journeys will get Delivered and completed. For example i see a great ad of Loreal but if i cannot go and buy the product then The conversion matrix will never justify whatever i would Have done probably at the front end. And thereby when we choose These mediums today if they are interactive mediums in my Mind will continue to get a higher throughput and that's Why we have smart TVs which are becoming smarter. But can they end up becoming the way through which i can Shop by convert. If that happens i think we will Start seeing some of those mix of channels that today we Have transformed. And that's why i said it's Because the product delivery and discovery all has to get Embedded for programmatic really to scale with quality of Inventory that we have. And i think all the b and c and Those who do not really match up to this level i think it's Fair that they should die. And they will. I just want to add to deepak. You know i think deepak Just made varda's job a lot more easier. He just said where people are consuming that's where the Business is really happening. So yeah great. So basically i just wanted to add to deepak. So i think Programmatic is just a platform right. It allows you know Advertisers to reach out to a much larger audience and Which is not the wall gardens. So if you want to reach Out to anybody outside of the meta google amazon world Programmatic is the way to do it because it's all of the Programmatic. So instead of marketers you know having to Go through the pain of reaching out to one and every publisher On a separate you know with a separate media plan and which Takes up a lot of the time. You're just reaching out to the Entire universe outside of the wall gardens in one shot. So it makes you know advertising agencies, marketers Lives much easier. It allows them to target the right Audiences because you can add your first party data your Second party data use third party data from you know Appliations that are already inbuilt into the Programmatic landscape. You can use their data. You can set up your frequency caps. You can just use every Capability that a tech platform has in one platform. So it's simplifying according to me it's just simplifying Everybody's lives with you know whatever you need you Just pick and choose and then apply it. Also you know adding on to your brand safety and other Tools i think you know when publishers do their checks Okay we've got so and so tools that we use or we know that our Audiences are safe, our content is brand safe and so on. Within programmatic you know you have the ssp's you have the Tsp's who are also adding in a layer and additional layer of Using tools like white ops or pixelate or you know double Verify where they're looking at how do we scan that traffic Again and then make sure that it's brand safe. Make sure that you know there's no other irrelevant content That you don't want to be around. So yeah that's a challenge and that's the solution that comes With programmatic. Thanks Priya. Thanks Deepak. So you know we have spoken about a lot about the data that Goes in the targeting that we should be doing the publishers You know the strategy that we should be adopting the Channels but then what about the end user because Privacy is definitely a conversation that's on everybody's Minds and with people being more and more aware of what They want to see you know how would you you know the way I think is that privacy takes at most priority obviously But then what is the fine line that a marketer should Walk to ensure that the user wants to see the ad versus A user who does not want to see the ad and still be able to be Relevant because that is what programmatic is all about. We want to be relevant so how do we walk that fine line? Yeah the first part of the question user wants to see the Ad does not want to see the ad i think that's probably i Suspect above all of our pay grades right you know i think These are there are different regulations floating around You know consent in consent out negative tracers etc etc So i guess we'll probably flow with what i guess indian Regulation sees right i think the second part of the question Which is which is like you know how do you sort of Track action how do you rather speak to someone without Spoking him right but at the same time be thoughtful about It right i'll give you a couple of examples because you Know you know as a part of my job i get to talk to a Bunch of people including let's say somebody in krogers Albert's and etc etc so if i talk to you saying Sashitar i think you know i'm sorry you're also Losing her so i'll take that you know example right Say hey you know you're losing her right whatever you Bought last week is not working try this you'd Probably get offended right obviously you did i'm Sure you know this is a small part of you that Sort of got ticked but however if i sort of Reframed it saying this is the hair treatment anti Hair fall treatment or whatever right that people in Your geography and i won't i'd probably say i Probably won't say city i suspect i'd probably say Coramangalar Bandra have used sorry have bought In the last one week is trending it's a little More acceptable you see where i'm going with this i think The right level of contextuality from what i've Sort of at least you know gathered so far is Talk to you at the level of a cohort that you Would like to be associated with which Broadly is not controversial and does not Indicate very strong views or opinions about you I know it's a very convoluted sort of statement but You get the trip like for example i think it's Okay to say you know today's a hot day in Bombay how about some buttermilk right But people don't seem to say anything you You're buying a lot of acidic food right acidic stuff Buy buttermilk right i think there's this sort of Right way to you know sort of talk i think the Problem that most people seem to have right because I've worked on both right and left left brain Marketing is people think the data cut is the Way you ought to be communicating the data Cut means nothing to the customer he's Psychographic the cohort that he belongs to right Saying i'm a cricket fan is doing gross Injustice if you're a cricket fanatic and is doing Gross injustice if you're a if you're just a you Know if you're just a cricket watcher you know Couch potato equivalent right so i think that's To me the big sort of undersolved part what Priya talked about i think the basics are all in Place think of it like this i think the Plumbing is in place i think the way the Water seems to be coming out right someone sort of Someone wants water out of a jacuzzi or giving him a Hand shower and vice versa right i think that Contextualization hasn't sort of still come in i Suspect with it's going to be a lot more easier Can i just come in here i think just want to add Two bits i think this area again will go through Massive change it's already with digital personal Data production bill it's the core of it and i Think marketeers have to start going back along with the Data privacy and the tech team because the data for the Purpose for which it's getting collected the end use of Data the fiduciary responsibility to ensure that Not just you but if you're using partners and vendors Who in turn are going to work with you and if they Have a mishap you are accountable and i think then the Anonymization and encryption of data to ensure that just like You mentioned personal identifiable data has to Completely be masked and done away with so i think all of that Will create added complexity to the level at which you will Be able to do personalization and do more targeted stuff Because customers can always come back and say this is Not a consent i have given how did you know that this is a Product i needed or this was a shoe and i think we have had Enough stories in the past of how you know some of the Agencies knew what is the next product you are going to buy Even before the need arose or how dominos knows who is Going to place or i think so this is going to be a Very interesting space of how you combine privacy but Still continue to look at sharper targeting. Thank you Deepak. So yes, you had a lot of examples to Share and that was brilliant actually and same with Deepak. So privacy is important and we want to prioritize Privacy it is equally important for the brands and Agencies eventually the marketers to understand who is the User we want to reach out to and identify the line which we Need to walk to reach out to that user without spooking them I still remember a conversation which i had with a person He was asking me it was in a flight he was asking me what Do you do i got to explaining a little bit we struck up a Conversation and he asked me okay tell me one interesting Campaign that you have done or else some interesting Strategy that you have adopted so there was this i Explained to him how we tapped into the local dealer Network based on pin codes and then on the phone screen When the user tapped on by now he would be connected to the Local dealer this was not a product that was sold online So this was more of an automobile brand so it was a test drive So the local dealer would get that number and then his Number would pop up on the user screen the person said That's really cool a bit creepy but really cool So that is the fine line that we need to understand and You know have that in our mind when we are talking about Privacy understanding what is it the user wants making Sure that the users are educated about the data that They are sharing in bold words and then coming back Collecting that data and reaching out to them for Relevant advertising now we have spoken about all of These topics but then one more topic which is being Discussed by everyone right now and i believe i just have time For one more question so my apologies i guess i will go to Priya with this one so priya your thoughts on sustainability Because programmatic is a medium where we utilize Ad servers we utilize server integration so heavily that On an average one ad slot gets about 7000 hits per month 7000 per ad slot this means that only across the top five Economy you know digital marketing countries we are Talking about 215,000 metric tons of co2 so with this in Mind what steps are we taking as an industry towards Sustainability and what does the future hold for us Sure so you know when you think of sustainability i mean Advertising is one of the biggest industries that Contributes to carbon emissions so i will give you an Example a $10,000 campaign run on any digital media would Contribute to about two metric tons of carbon emissions That is massive that could be you know an entire airplane Flying for you know four or five hour flight so it is Massive of how we are contributing you know carbon Emissions into the environment and we definitely have to Do something so i think it is the responsibility of every Company to look first of all look at what has been Contributed by them so it is important to measure what You are contributing only then you can offset and there are Multiple ways and everybody would have their own strategy But i will give you an example of what openx did because We are an ssp we get you know billions and trillions amount Of data into our data centers each month what we did Was we migrated to gcp google cloud platform and that Migration helped us to kind of you know reduce our carbon Emissions drastically so that was the first step that we did And that was more it started off being more of a company Decision to kind of bring down costs becoming more efficient Which attributed to us becoming carbon neutral in a big way And then we started from there we started to build our Other initiatives and we are now certified net zero and There were a lot of other parameters that contributed to it But every campaign that an advertising agency wants to run With us we actually would bear the cost of you know offsetting That if they want to run green media buys and that is an Initiative that we have taken because we want to not only Just be net zero ourselves but also want to help all of Our other partners to you know go down that path so Sustainability is something everybody needs to look at From their own perspective as well as help their partners to Achieve that status themselves. Thank you. Thank you so much. So my two cents on this topic again would be that you know Sustainability is definitely an initiative we should be Looking at but then some practical some more practical Steps to add to what you just mentioned would be Looking at identifying the smallest possible supply Chain that least number of hops that we can in reaching the Eventual user that way that is one way to reduce it so SPO is a big part of the conversation here and we Should definitely be looking at it as one of the options One of the short-term options to proceed with this While the overall sustainability conversation picks up base And we go towards the net zero. Well thank you so much everyone for sharing your thoughts On the topics do we have any questions from the audience For any of the panelists or myself well thank you so much


What's going on guys, welcome back to another video. So I've got a couple of great products to show you both. These products are selling really successfully and working right now. I have one in the travel niche and I have one in the home niche. If you've been following the channel for the last few months, you'll know that my primary focus tends to be on products that are working to help you guys get started because at least from my own experience and the people that I work with on a one-to-one basis, the area they struggle with tends to be the product selection. So that tends to be what I produce my content around. However, if there's something that you specifically are struggling with and would like my help with, just put a comment down below, let me know what it is, and I have no problem producing a video specifically on that topic. I used to do subscriber store reviews a while ago, so potentially if that's the sort of thing you want to see, basically let me know how I can help and serve you best. That being said, let's jump straight into product number one. So product number one is quite an interesting product. They're relatively new products. We can see it went live on December 15th of 2023. It's by a company called Power Spell, P-W-R, branded really kind of minimalistic. They do a brilliant job though, and they actually private label the products as well. This is something I see more and more often happening in the dropship in space in order to be successful. So when I got started four, seven years ago now, then private labeling wasn't even really a thing unless you were some big company and you had thousands of units in a warehouse somewhere and you had a 3PL that was pickpacking and dispatching them for you. Whereas nowadays you can work with certain suppliers and agents that will happily put your logo on say 200 units at a time, keep it on their shelf in China, and then just basically just keep you informed with stock levels and you pay as you go in that way. So it's a lot easier to get your logo basically than trying to say put onto a product than you might think it is. So basically what this product is, as it's been playing in the background, it's a fancy power bank, not to be too harsh on it. It is a brilliant product. I'll show you how I know it's a brilliant product and I'll show you how I know it's selling. I'll show you the proof and the evidence behind it. It has a digital battery display which is brilliant because of most power banks you have no idea when it's about to cut out. It has lots and lots of different adapters for lots and lots of different devices. It has lots of different plug adapters as well. So wherever you go in the world, well, you're at least going to have the most commonly used ones. So it is a handy tool to have, not only around the house, but if you're somebody who likes to travel. Let's see what people are saying about it then. So let's go down into the product section, the comments section, 3.6 thousand reactions, 350 comments and 600 shares. Pretty good given it's only been running for December 15th. We're ended Jan now so six weeks or so. And lots and lots of recent comments which is a good sign because it shows it's working at the moment. However, what we're also looking for is people who are positive about the products as well. So this is awesome. It's a great product. I love it. This thing works great. Power's my phone really fast so there's somebody who's bought the product. I've yet to use it for travel. It's been great just at home looking forward to using it when traveling. Great product. I love mine and the travel case with adapters is so handy. Just got mine. Can't wait to use it in Europe. All from recent. So all in the last day, three days, couple of weeks or so that have bought this product and also importantly, I'm happy with it as well. Let's jump on to the website then and take a look at their setup. Now the first thing to be honest that stuck out to me was number one, the amount of reviews over a thousand reviews. That's pretty much going to put to bed any kind of hesitation or pessimism from a consumer. Like a thousand reviews is difficult to fake. When you see a lot of kind of like pop-up drop shipping stores, they might only have 20, 30, 40 reviews imported from AliExpress, but the amount of people that are going to go to the lengths of having over a thousand reviews, it separates you from any other kind of like pop-up drop shipping store. It makes you so much more difficult to compete with and at the end of the day, business is a competition, especially in a drop shipping space where products are more sourceable and easily competitive or easily to compete against. You need to be doing things better than the next person.  So next, we can see the price of the products which is $100, it's not a cheap product and there's definitely going to be some good profit margins to be had in here. It comes in a nice travel case, there's also a free gift which is a nice touch. And then if we just kind of like scroll down and browse and take a look at the site we can see it's fairly simplistic. They do a really good job of pointing out the different features and benefits of the product in an easy to consume way. It's not just paragraph and paragraph after text. All of the imagery as well if you haven't noticed is original. The product is branded. Again, setting themselves above everybody else so much more professional, so much more believable from a consumer point of view. I can't stress it enough. The number one thing, the number one hurdle you have to get over as somebody advertising on Facebook that nobody has ever come across is that initial hesitation and pessimism from the consumer.  So $100. Let's jump on to Aliexpress. I found near as damn it the exact same product. So it's a slightly different design but as you can see lots of different adapters. It has the kind of like wrap around that was weird. Let's see if I can play that again for you. It has the kind of like wrap around cables. It has the different travel adapters. The only thing with this one is I don't believe it actually has the digital display so you can see exactly what the battery levels are. As you can see USB, USB-C, mini USB, lightning cables it's got everything there. The only thing I can see that I don't think this one comes with that those guys do have is the travel case but that should be super super simple to arrange. I'm pretty sure if you even contacted these guys and say hey I want to sell it I want to put my logo on it. I want to send it with a travel case that'll be able to set you up as well. A lot of people always just take listings on Aliexpress as face value like strike up a conversation with the supplier. Add them on WeChat, add them on WhatsApp. Most of these guys have WhatsApp now so you can literally have a conversation for three or four minutes even jump on a call and just talk things out and just try and do something to the product to make it different to what was already out there. So 24 pounds that equates to about 30 ish dollars, 35 dollars let's say you chuck in an extra 10 dollars for a case. You're talking 45, 50 dollars max, they're selling it for 100 so I would say they give or take double in their money on this product. So very profitable, very effective and a brilliant setup and brilliant, brilliant brand and business. Moving on to product number two, we actually have a real so away from the kind of like typical Facebook ad setup of that square aspect ratio that we saw for the Power Bank these guys successful creative I should say is actually real. We can see this person is on camera whether they're part of the business whether they are an actor it doesn't matter either way the style of content is a UGC piece. They are clearly demonstrating how the product works they're clearly pointing out different benefits of it and as you can see they do a really good job of kind of like striking emotions and a reaction from the people who view it. They see the before and after they see the bugs which gives that kind of gross effect. It keeps people wanting to keep watching if that makes sense and because there's somebody on camera a real person talking to you you're much more likely to watch it versus just random clips of a product with some cheesy music in the background I'll draw your attention to the comments section I love this gadget works great I love this machine works great love mine just received and having fun so one week one week one week works great and I love it one week works great thank you two weeks I just received mine and I love it not too many comments but as we can see a high percentage of them so far all from recent time as well from people who bought the product and then happy with it so I think it goes without saying this is another winner something that's selling and working and people want it's also a brilliant kind of like impulse by purchase it's not the sort of thing that you think about buying until you actually see it if you know what I mean it's definitely one of those kind of like impulse buys so the way it works is you obviously stick that on top of your jar with the like tin foily type cover and I'm assuming it kind of like back view impacts it and fits the lid to match the size of the jar as well so it does actually work on multiple sizes of jars which is a key point to make sure you put across because there's no point having something that only fits one type of jar size let's jump on to the website then this looks like a what was it called it was like a really old school theme that was really popular at one point it's a refresh theme shop to my that was it this looks similar to an old school shop to my if you haven't seen that theme before do a quick google check and just check out the appearance of that theme but it was an effective theme works really really well and this just reminds me of it I really like this section up here having a testimony of the first thing somebody sees again just puts to bed any kind of like hesitation or helps to do it also three and a half thousand reviews that is a significant amount of views not only does it put to bed any kind of like hesitation there legitimate business but also shows that people are happy with the product I don't believe the product is actually private labeled or is it there I think it is actually has actually got the logo on there so again another successful product that has been private labeled another successful product that's been separated from any of the competition let's move down into the product description then some kind of like cut off imagery here perhaps it's optimized for a mobile device they have kind of like others versus theirs as is so much better painting their products obviously and in a better light and that's a very kind of like not a great image if I'm honest but as we move down there's a common theme of reiterating how people are happy with this product that social proof so to speak let's come down into the reviews and let's try and find these three and a half thousand reviews so it doesn't actually look like so they say they have three and a half thousand reviews but you can't actually see all three and a half thousand of them so there's a bit of I'm not sure what's going on there perhaps it has a loaded or perhaps it's just like an extra app to give off that impression of more social proof but anyway let's move on so $49 for one let's jump on to AliExpress I mean it's basically the same product isn't it I'm not sure what this extra bit is at the bottom there let's see if we can get one in it's four so if we compare it it's give or take it's exactly the same product it's going to cost you $15 to deliver they're selling one for $50 there's some brilliant profit margins in there you can that's like a 300% mark up so plenty of room for your advertising costs as well it's obviously a product that people are wanting to buy it's the perfect target market on Facebook in my opinion which is females over the age of like 40 or 50 so all in all a really good recipe for for a great product there this sort of thing that appeals to you to end the video as promised if you want some information on my mentorship program it's working with myself on a one-to-one basis it's very exclusive I only do work with five people at a time so there isn't always availability to check that then what do you need to do is come down into the secret link in the video description the reason why it's hidden and I'm telling you this at the end of the video is because I don't want every man and his dog booking in my calendar and wasting my time if I'm being completely honest I don't want to work with people who are ready to work with me and create a life-changing business for themselves so if that is yourself what you need to do is just click this link here it's going to take you to a very sure kind of like questionnaire basically the idea of these questions is number one is to filter out those people who are lazy and can't be bothered to do it even though it only takes two to three minutes and number two is I want to get to know you a little bit initially before we jump on that first strategy session so I want to know what your current level of experience is what you need to help with and what you want to get out of the mentorship as well what your ideal goal would be and if I think I can help you achieve that so for example if your goal is to buy a Lamborghini in your second week then I will probably not let you book a call and cancel because it's unrealistic