I want to re-order the default fields on registration form
You will need to write a custom module for this, there is some good reading here. https://www.drupal.org/developing/modules/7.

You should create a folder like /sites/modules/&lt;module_name&gt;.

Create a &lt;module_name&gt;.info file

name = Custom order of fields
description = Customizes field orders
core = 7.x


Also create a &lt;module_name&gt;.module file an add the following code. The weights control the order, lower is higher on the page. 

Please note that this might cause some problems with the field ordering if you add or change fields with the manage fields UI, so you might have to tweak the values a bit later on. You can go the the manage fields page and in the right top click Show row weights, this allows you to change the weights of the fields created with the UI.

function &lt;module_name&gt;_form_user_register_form_alter(&amp;$form, &amp;$form_state) {
  // Move the whole group.
  $form['account']['#weight'] = -10;

  // Move a single property within the group.
  $form['account']['name']['#weight'] = -10;
  $form['account']['mail']['#weight'] = 5;
  $form['account']['pass']['#weight'] = 15;

  // Move a value out of the group and order it.
  $form['name'] = $form['account']['name'];
  unset($form['account']['name']);
  $form['name']['#weight'] = -10;
}


Finally if you want the order to persist on the account edit page, copy all code again into a function named    &lt;module_name&gt;_form_user_account_form_alter(&amp;$form, &amp;$form_state)