How are substitutions made made in rules using maps with dnat?

nftables syntax seems inconsistent but I’m still trying to understand it in regard to how values are mapped from maps to the rules that reference them. Here is what looks like an inconsistency. These examples are from various Internet searches:

`                { 2.2.2.2 . 8888 : 192.168.1.101 } # set element
dnat to ip saddr  . tcp dport map # the rule
dnat to ip saddr <2.2.2.2> tcp dport map # how it seems to be mapped
`

Looks pretty straightforward except the “dnat ip to” appears at the beginning with a map where it would otherwise be at the end like this:

`<filter-expression> dnat to 1.2.3.4
ip saddr 2.2.2.2 tcp dport 8.8.8.8 dnat to 1.2.3.4 # how it seems to be mapped
`

This one has me baffeled. I left the command in place because the order of the expression is not making sense to me.

`    { 1400 : 192.168.1.4 . 5061 } # set element
nft add rule nat pre ip protocol tcp dnat ip addr . port to tcp dport   # command
nft add rule nat pre ip protocol tcp dnat ip <192.168.1.4> . <5061> to tcp dport # my attempt to translate
`

Where does the port 1400 fit in? What is the rationale? I haven’t found a formal syntax definition that applies to this.

David