This challenge introduces using JavaScript callback functions as arguments to D3 methods. Since D3 is a JavaScript object, it has no problem following the same syntax rules
* All of the methods are chained together. Since `data()` and `enter()` precede the `text()` method, the following method calls will be for each datum and executed separately
*`select('body')` targets the 'body' element of the HTML document
*`selectAll('h2')` targets the existing 'h2' nodes that are children to the 'body' element
*`data(dataset)` tells D3 that the data to be used is held within the variable `dataset`
*`enter()` returns placeholder nodes for each datum that has no corresponding DOM element in the selection
*`append('h2')` turns these placesholders in to 'h2' elements
*`text((d) => d + ' USD')` uses JavaScripts callback functionality to insert each datum, `d`, as the text for each 'h2' node created previously and concatenates the required ' USD'
*`select('body')` targets the 'body' element of the HTML document
*`selectAll('h2')` targets the existing 'h2' nodes that are children to the 'body' element
*`data(dataset)` tells D3 that the data to be used is held within the variable `dataset`
*`enter()` returns placeholder nodes for each datum that has no corresponding DOM element in the selection
*`append('h2')` turns these placesholders in to 'h2' elements
*`text((d) => ```${d} USD```)` uses JavaScripts callback functionality to insert each datum, `d`, as the text for each 'h2' node created previously. It also makes use of JavaScript template literals to avoid string concatenation