Scales map abstract dimensions to visual representations. They are functions that receive a value in one dimension (usually a dimension that fits the input data) and return a corresponding value in another dimension (usually a dimension that represents output variables that are used in the visualization, such as positions, lengths, or colors).
For example, if your data consists of a list of 20 values (between 0 and 1,000) and you wish to plot them on a 700 x 500 Cartesian grid using all the space available, you need to multiply each value so that its position is proportional to the space available. To fit the 20 items on the x axis, for example, you might divide 700 by 20 and multiply it by the index of each data item. Multiplying each value by 0.5 will squish the [0,1000] domain proportionally on the y axis.
If you add more values, you have to recalculate everything again...