39 Immediate and Delayed Values
In immediate assignment, the value is computed immediately when the assignment is done, and is never recomputed. In delayed assignment, the computation of the value is delayed, and is done every time the value is requested.
In immediate assignment (=), a random color is immediately generated:
 In:= Out= Every time you ask for value, you get the same random color:
 In:= Out= In delayed assignment (:=), no random color is immediately generated:
 In:= Each time you ask for value, is computed, and a new color is generated:
 In:= Out= The color will typically be different every time:
 In:= Out= Its very common to use := if something isnt ready yet when youre defining a value.
You can make a delayed assignment for circles even though n doesnt yet have a value:
 In:= Give n a value:
 In:= Out= In:= Out= The idea of delayed assignment is directly analogous to the Delayed construct we discussed for deploying webpages. In delayed assignment we dont compute a value until we need it. Similarly, when we use CloudDeploy with Delayed we dont compute the content of a webpage until someone asks for it.
Theres a notion of delayed rules too. xrhs computes rhs immediately. But in a delayed rule xrhs (typed :>), rhs is instead recomputed every time its requested.
This is an immediate rule, where a specific value for RandomReal[ ] is immediately computed:
 In:= Out= You can replace four xs, but theyll all be the same:
 In:= Out= This is a delayed rule, where the computation of is delayed:
 In:= Out= is computed separately when each x is replaced, giving four different values:
 In:= Out= 39.1Replace x in {x, x+1, x+2, x^2} by the same random integer up to 100. »
Sample expected output:
 Out[]=  Answer & check your solution
39.2Replace each x in {x, x+1, x+2, x^2} by a separately chosen random integer up to 100. »
Sample expected output:
 Out[]=  Answer & check your solution
Because you dont want to have to recompute things unless its necessary. Its more efficient to just compute something once, then use the result over and over again.
How does one read := and :> out loud?
:= is usually just colon equals, though sometimes delayed assignment. :> is usually colon greater, though sometimes delayed rule.
Youll start an infinite loop thatll eventually get cut off by the system. x={x} is the same story.
It indicates that inputs are assigned to In[n] and outputs to Out[n]. The := for input means the assignment is delayed, so that if you ask for In[n] the result will be recomputed.