locator – Dynamic – evaluate on variable change


I am using LocatorPane to let the user pick two points for a follow-up computation:

pts = {{1, 3}, {3, 3}};

LocatorPane[Dynamic[pts], Graphics[GridLines -> {Range[0, 5], Range[0, 5]}, Axes -> True, 
AxesStyle -> Thick, PlotRange -> {{0, 5}, {0, 5}}, AspectRatio -> 3/4, Ticks -> {Range[0, 5], Range[0, 5]}]]

Extract and sum the ‘x’ coordinates of the two points:

x1 = Dynamic[First[pts[[1]]]]
x2 = Dynamic[First[pts[[2]]]]
x1+x2

Now, whenever I change the position of the locators, the values in the output of x1+x2 change accordingly, e.g. 1+3, but why doesn’t MMA compute the sum of the numeric values?